(纯代码 )transform旋转:

// 实现图片的旋转和移动和放大缩小

#import "ViewController.h"

@interface ViewController ()

@property (nonatomic, weak) UIButton *_btnImage;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    /** 头像图片 */
    // 设置按钮为自定义样式
    UIButton *btnImage = [UIButton buttonWithType:UIButtonTypeCustom];
    // 设置位置和尺寸
    btnImage.frame = CGRectMake(50, 50, 284, 312);

    //  高光
    // 设置文字及对应状态
    [btnImage setTitle:@"高光啊。。。。" forState:UIControlStateHighlighted];
     // 设置文字颜色及对应状态
    [btnImage setTitleColor:[UIColor greenColor] forState:UIControlStateHighlighted];
    // 设置文字样式和大小
    btnImage.titleLabel.font = [UIFont fontWithName:nil size:35.0];
    [btnImage setBackgroundImage:[UIImage imageNamed:@"biaoqingdi"] forState:UIControlStateHighlighted];

    // 普通
    [btnImage setTitle:@"普通啊。。。。" forState:UIControlStateNormal];
    [btnImage setTitleColor:[UIColor yellowColor] forState:UIControlStateNormal];
    [btnImage setBackgroundImage:[UIImage imageNamed:@"chiniupa"] forState:UIControlStateNormal];
    [self.view addSubview:btnImage];
    // 方面以后使用或修改控件属性
    self._btnImage = btnImage;

    /** 左旋转 */
    UIButton *btnLeftRotate = [UIButton buttonWithType:UIButtonTypeCustom];
    btnLeftRotate.frame = CGRectMake(285, 400, 50, 50);
    [btnLeftRotate setImage:[UIImage imageNamed:@"left_rotate_normal"] forState:UIControlStateNormal];
    [btnLeftRotate setImage:[UIImage imageNamed:@"left_rotate_highlighted"] forState:UIControlStateHighlighted];
    [self.view addSubview:btnLeftRotate];
    [btnLeftRotate addTarget:self action:@selector(btnRotate:) forControlEvents:UIControlEventTouchUpInside];
    [btnLeftRotate setTag:1];

    /** 右旋转 */
    UIButton *btnRightRotate = [UIButton buttonWithType:UIButtonTypeCustom];
    btnRightRotate.frame =CGRectMake(285, 500, 50, 50);
    [btnRightRotate setImage:[UIImage imageNamed:@"right_rotate_normal"] forState:UIControlStateNormal];
    [btnRightRotate setImage:[UIImage imageNamed:@"right_rotate_highlighted"] forState:UIControlStateHighlighted];
    [self.view addSubview:btnRightRotate];
    [btnRightRotate addTarget:self action:@selector(btnRotate:) forControlEvents:UIControlEventTouchUpInside];
    [btnRightRotate setTag:2];

    /** 向上移动 */
    UIButton *btnUp = [UIButton buttonWithType:UIButtonTypeCustom];
    btnUp.frame = CGRectMake(100, 400, 50, 50);
    [btnUp setImage:[UIImage imageNamed:@"top_normal"] forState:UIControlStateNormal];
    [btnUp setImage:[UIImage imageNamed:@"top_highlighted"] forState:UIControlStateHighlighted];
    [self.view addSubview:btnUp];
    [btnUp setTag:1];
    [btnUp addTarget:self action:@selector(btnRun:) forControlEvents:UIControlEventTouchUpInside];

    /** 向左移动 */
    UIButton *btnLeft = [UIButton  buttonWithType:UIButtonTypeCustom];
    btnLeft.frame = CGRectMake(50, 450, 50, 50);
    [btnLeft setImage:[UIImage imageNamed:@"left_normal"] forState:UIControlStateNormal];
    [btnLeft setImage:[UIImage imageNamed:@"left_highlighted"] forState:UIControlStateHighlighted];
    [self.view addSubview:btnLeft];
    [btnLeft setTag:2];
    [btnLeft addTarget:self action:@selector(btnRun:) forControlEvents:UIControlEventTouchUpInside];

    /** 向右移动 */
    UIButton *btnRight = [UIButton buttonWithType:UIButtonTypeCustom];
    btnRight.frame = CGRectMake(150, 450, 50, 50);
    [btnRight setImage:[UIImage imageNamed:@"right_normal"] forState:UIControlStateNormal];
    [btnRight setImage:[UIImage imageNamed:@"right_highlighted"] forState:UIControlStateHighlighted];
    [self.view addSubview:btnRight];
    [btnRight setTag:3];

    [btnRight addTarget:self action:@selector(btnRun:) forControlEvents:UIControlEventTouchUpInside];

    /** 向下移动 */
    UIButton *btnDown = [UIButton buttonWithType:UIButtonTypeCustom];
    btnDown.frame = CGRectMake(100, 500, 50, 50);
    [btnDown setImage:[UIImage imageNamed:@"bottom_normal"] forState:UIControlStateNormal];
    [btnDown setImage:[UIImage imageNamed:@"bottom_highlighted"] forState:UIControlStateHighlighted];
    [self.view addSubview:btnDown];
    [btnDown setTag:4];
    [btnDown addTarget:self action:@selector(btnRun:) forControlEvents:UIControlEventTouchUpInside];

    /** 放大 */
    UIButton *btnBig = [UIButton buttonWithType:UIButtonTypeCustom];
    btnBig.frame = CGRectMake(100, 600, 50, 50);
    [btnBig setImage:[UIImage imageNamed:@"plus_normal"] forState:UIControlStateNormal];
    [btnBig setImage:[UIImage imageNamed:@"plus_highlighted"] forState:UIControlStateHighlighted];
    [self.view addSubview:btnBig];
    [btnBig setTag:1];
    [btnBig addTarget:self action:@selector(btnFiex:) forControlEvents:UIControlEventTouchUpInside];

    /** 缩小 */
    UIButton *btnSmall = [UIButton buttonWithType:UIButtonTypeCustom];
    btnSmall.frame = CGRectMake(285, 600, 50, 50);
    [btnSmall setImage:[UIImage imageNamed:@"minus_normal"] forState:UIControlStateNormal];
    [btnSmall setImage:[UIImage imageNamed:@"minus_highlighted"] forState:UIControlStateHighlighted];
    [self.view addSubview:btnSmall];
    [btnSmall setTag:2];
    [btnSmall addTarget:self action:@selector(btnFiex:) forControlEvents:UIControlEventTouchUpInside];

}

// 旋转
- (void) btnRotate: (UIButton *) btn
{
    switch (btn.tag) {
        case 1:
            // __btnImage等同于self._btnImage
            // 负数角度为向左旋转角度
            // 这个方法一样的效果:__btnImage.transform = CGAffineTransformMakeRotation(-M_PI_4);
            __btnImage.transform = CGAffineTransformRotate(__btnImage.transform, -M_PI_4);
            break;

        case 2:

            // 正数角度为向右旋转角度
            self._btnImage.transform = CGAffineTransformRotate(self._btnImage.transform, M_PI_4);
    }

}

// 移动
- (void) btnRun: (UIButton *) btn
{
    switch (btn.tag) {
        case 1:
            // 每次向上移动的距离
            // 这个方法一样的效果:self._btnImage.transform = CGAffineTransformMakeTranslation(0, -30);
            self._btnImage.transform = CGAffineTransformTranslate(self._btnImage.transform, 0, -30);
            break;
        case 2:
            // 每次向左移动30的距离
            self._btnImage.transform = CGAffineTransformTranslate(self._btnImage.transform, -30, 0);
            break;
        case 3:
            // 每次向右移动30的距离
            self._btnImage.transform = CGAffineTransformTranslate(self._btnImage.transform, 30, 0);
            break;
        case 4:
            // 每次向下移动30的距离
            self._btnImage.transform = CGAffineTransformTranslate(self._btnImage.transform, 0, 30);
            break;

    }
}

// 放大和缩小
- (void) btnFiex:(UIButton *) btn
{
    switch (btn.tag) {
        case 1:
            // 每次放大1.5倍
            // 这个方法一样的效果:self._btnImage.transform = CGAffineTransformMakeScale(1.5, 1.5);

            self._btnImage.transform = CGAffineTransformScale(self._btnImage.transform, 1.5, 1.5);
            break;

        case 2:
            // 每次缩小0.5倍
            self._btnImage.transform = CGAffineTransformScale(self._btnImage.transform, 0.5, 0.5);
            break;
    }
}

@end
时间: 2024-11-04 00:32:41

(纯代码 )transform旋转:的相关文章

纯代码transform位移伸缩和旋转

1 // 2 // LWTViewController.m 3 // 纯代码位移和伸缩作业 4 // 5 // Created by apple on 14-5-20. 6 // Copyright (c) 2014年 lwt. All rights reserved. 7 // 8 9 #import "LWTViewController.h" 10 #pragma mark 定义常量 11 /** 图片距离顶部的高度 */ 12 #define KImageY 60 13 /**

【iOS开发】多屏尺的自动适配 AutoLayout (纯代码方式)

关于AutoLayout,最早从iOS6开始引入使用. 主要功能是使用约束,对视图进行相对布局,以适应不同屏尺的变换. 网上大量的资料都在介绍xib和storyboard,如何使用AutoLayout,说纯代码使用AutoLayout进行UI布局的越来越少.对于我这个习惯了代码UI布局的人,写个备忘: AutoLayout是什么? 使用一句Apple的官方定义的话 AutoLayout是一种基于约束的,描述性的布局系统. Auto Layout Is a Constraint-Based, De

iPad纯代码实现横竖屏切换,采用相对布局

因为本来不喜欢使用StoryBoard.xib等可视化编程,一直使用的纯代码布局,但是纯代码布局的iOS开发者会遇到一个问题,就是横竖屏适配的问题,如果使用自动布局,那些约束的,写起来都是不难,但是控件之间的关联太多,以至于维护性很差.本人由于工作的原因,做iPad开发,那就必须要解决横竖屏适配的问题,于是就有了这篇文章. 代码如下: // //  ViewController.swift //  iPad横竖屏切换 // //  Created by zhangxu on 16/7/30. /

纯代码添加约束,autolayout 适配

IOS AutoLayout 代码约束—VFL 2014-12-22 22:19:43http://my.oschina.net/carson6931-Carson6931-点击数:2148 IOS 提供了两种添加约束的方法 第一种: +(instancetype)constraintWithItem:(id)view1 attribute:(NSLayoutAttribute)attr1 relatedBy:(NSLayoutRelation)relation toItem:(id)view2

纯代码适配iPad横竖屏

网上大量的文章在适配iPad横竖屏时都使用了xib或storyboad, 但是xib和storyboard并不受团队开发欢迎,下面介绍采用纯代码的方式适配iPad的横屏和竖屏,方法非常简单: 1.) 设置要适配的对象的autoresizingMask,  eg: targetView.autoresizingMask = UIViewAutoresizingFlexibleHeight; 2.)   在当前的视图控制器中调用[self willRotateToInterfaceOrientati

纯代码 自动屏幕适配iPhone

代码判断,你也可以用xib自带的自动布局选项 我是用的纯代码写的 纯代码 自动屏幕适配iPhone,布布扣,bubuko.com

ios开发UI篇—使用纯代码自定义UItableviewcell实现一个简单的微博界面布局

本文转自 :http://www.cnblogs.com/wendingding/p/3761730.html ios开发UI篇—使用纯代码自定义UItableviewcell实现一个简单的微博界面布局 一.实现效果 二.使用纯代码自定义一个tableview的步骤 1.新建一个继承自UITableViewCell的类 2.重写initWithStyle:reuseIdentifier:方法 添加所有需要显示的子控件(不需要设置子控件的数据和frame,  子控件要添加到contentView中

Stroyboard(可视化界面)与纯代码

Stroyboard是苹果在 iOS 5 中引入的新技术,让纯代码变成了一个可视化的界面,让nib.xib有一种更加直观的展现,几十行甚至几百行的代码搞定的一个控件,现在只要动动手指就能完成一个控件了,初学者学到的绝大部分都是教你怎么使用StoryBoard的而不是怎么用纯代码,但是我自己更加喜欢纯代码,总觉得自己敲出来的代码更加能信任,修改起来也会更加简单. 一开始我以为纯代码跟可视化界面其实是一样的,看个人喜好选择用什么方法,后来查了资料发现,如果是一个大的项目,用可视化界面,那么团队就不能

纯代码实现布局,对话框

对话框自定义:相对布局的java代码实现创建AlertDiaglogWindow window = dlg.getWindow()创建布局,代码为相对布局载入布局,载入相关空间,设置相关控件的位置代码如下 int bgImageViewID = 10;  int iconImageViewID = 11;  int textViewID = 12;  int buttonOkID = 13;  int buttonCancelID = 14;  int srcImageViewId = 15;