iOS- UIButton/UIImageView/UISlider/UISwitch操作

 

 

如果看不到图片 可以尝试更换浏览器(推荐Safari )

 

一、控件的属性                            

1.CGRect frame

1> 表示控件的位置和尺寸(以父控件的左上角为坐标原点(0, 0))

2> 修改这个属性,可以调整控件的位置和尺寸

 

2.CGPoint center

1> 表示控件的中点(以父控件的左上角为坐标原点)

2> 修改这个属性,可以调整控件的位置

 

3.CGRect bounds

1> 表示控件的位置和尺寸(以自己的左上角位坐标原点,位置永远是(0, 0)

2> 修改这个属性,只能调整控件的尺寸

 

4.int tag

1> 表示控件的标识

2> 通过不同标识可以区分不同的控件

 

5.CGAffineTransform transform

1> 表示控件的形变状态(旋转角度、缩放比例)

2> 创建CGAffineTransform的函数

 1 * CGAffineTransformMakeScale(CGFloat sx, CGFloat sy)

 2 创建一个x、y方向的缩放比例分别为sx、sy的形变值

 3 

 4 * CGAffineTransformMakeRotation(CGFloat angle)

 5 创建一个旋转角度为angle的形变值

 6 

 7 * CGAffineTransformScale(CGAffineTransform t, CGFloat sx, CGFloat sy)

 8 在形变值t的基础上,再进行缩放,x、y方向的缩放比例分别为sx、sy,然后返回一个新的形变值

 9 

10 * CGAffineTransformRotate(CGAffineTransform t, CGFloat angle)

11 在形变值t的基础上,再进行旋转,旋转角度为angle,然后返回一个新的形变值

12 

13 二、添加控件到控制器的view

14 [self.view addSubview:子控件];

 

 

 

二、添加控件到控制器的view                       

[self.view addSubview:子控件];

 

三、设置按钮的属性

// 1.创建按钮

// 1.1.创建

UIButton *btn = [[UIButton alloc] init];



// 1.2.设置按钮的尺寸和位置

btn.frame = CGRectMake(0, 0, 100, 100);



// 1.3.设置按钮普通状态下的属性

// 1.3.1.设置背景图片

UIImage *normal = [UIImage imageNamed:@"btn_01.png"];

[btn setBackgroundImage:normal forState:UIControlStateNormal];

// 1.3.2.设置文字

[btn setTitle:@"你好" forState:UIControlStateNormal];

// 1.3.3.设置文字颜色

[btn setTitleColor:[UIColor greenColor] forState:UIControlStateNormal];



// 1.4.设置按钮高亮状态下的属性

// 1.4.1.设置背景图片

UIImage *high = [UIImage imageNamed:@"btn_02.png"];

[btn setBackgroundImage:high forState:UIControlStateHighlighted];

// 1.4.2.设置文字

[btn setTitle:@"Hello" forState:UIControlStateHighlighted];

// 1.4.3.设置文字颜色

[btn setTitleColor:[UIColor redColor] forState:UIControlStateHighlighted];



// 1.5.监听按钮点击

[btn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];

 

四、viewDidLoad                          

 

1.这是控制器的一个方法

2.当控制器的view创建完毕的时候会调用一次

 

五、UISlider                              

 

1.value属性可以获得当前的进度值

2.按钮的value发生改变了,会触发UIControlEventValueChanged事件

 

六、Plist文件的使用                           

 

1.加载一个plist文件的时候,会返回一个plist的根节点对象(Root

 

七、NSBundle的使用                          

 

1.利用NSBundle可以访问某个资源包的内容

 

2.如果访问软件中最主要资源包的内容,应该用mainBundle

NSBundle *bundle = [NSBundle mainBundle];

 

3.利用NSBundle获得文件的全路径

NSString *path = [bundle pathForResource:@"descs" ofType:@"plist"];

 

七、实例、按钮操作(移动/放大/旋转)                 

iOS- UIButton/UIImageView/UISlider/UISwitch操作                          

 ViewController.h

 1 #import <UIKit/UIKit.h>

 2 

 3 @interface ViewController : UIViewController

 4 @property (weak, nonatomic) IBOutlet UIButton *btn;

 5 

 6 // 重置

 7 - (IBAction)reset:(id)sender;

 8 

 9 // 行走

10 - (IBAction)run:(id)sender;

11 // 缩放

12 - (IBAction)scale:(id)sender;

13 // 旋转

14 - (IBAction)rotate:(id)sender;

15 @end

 

 ViewController.m

  1 #import "ViewController.h"

  2 

  3 #define kDelta 50

  4 //const int delta = 50;

  5 

  6 @interface ViewController ()

  7 //{

  8 //    CGFloat _angle;

  9 //}

 10 @end

 11 

 12 @implementation ViewController

 13 

 14 //- (void)begin

 15 //{

 16 //    // 0.动画(头部-开始动画)

 17 //    [UIView beginAnimations:nil context:nil];

 18 //    // 设置动画的执行时间

 19 //    [UIView setAnimationDuration:1.0];

 20 //}

 21 //

 22 //- (void)end

 23 //{

 24 //    // 4.动画(尾部-提交动画-执行动画)

 25 //    [UIView commitAnimations];

 26 //}

 27 

 28 - (void)btnClickWithBlock:(void (^)())block

 29 {

 30     // 0.动画(头部-开始动画)

 31     [UIView beginAnimations:nil context:nil];

 32     // 设置动画的执行时间

 33     [UIView setAnimationDuration:1.0];

 34     

 35     block();

 36     

 37     // 1.动画(尾部-提交动画-执行动画)

 38     [UIView commitAnimations];

 39 }

 40 

 41 #pragma mark 控制按钮走动(上下左右)

 42 - (IBAction)run:(id)sender {

 43     [self btnClickWithBlock:^{

 44         // 1.先取出frame

 45 //        CGRect tempFrame = _btn.frame;

 46         CGPoint tempCenter = _btn.center;

 47         

 48         // 2.取出按钮的tag标记

 49         int tag = [sender tag];

 50         // CGFloat delta = 100;

 51         switch (tag) {

 52             case 1: // 53 //                tempFrame.origin.y -= kDelta;

 54                 tempCenter.y -= kDelta;

 55                 break;

 56                 

 57             case 2: // 58 //                tempFrame.origin.x += kDelta;

 59                 tempCenter.x += kDelta;

 60                 break;

 61                 

 62             case 3: // 63 //                tempFrame.origin.y += kDelta;

 64                 tempCenter.y += kDelta;

 65                 break;

 66                 

 67             case 4: // 68 //                tempFrame.origin.x -= kDelta;

 69                 tempCenter.x -= kDelta;

 70                 break;

 71                 

 72             default:

 73                 break;

 74         }

 75         

 76         // 3.重新赋值按钮的frame

 77 //        _btn.frame = tempFrame;

 78         _btn.center = tempCenter;

 79     }];

 80 }

 81 

 82 #pragma mark 放大\缩小

 83 - (IBAction)scale:(id)sender {

 84     [self btnClickWithBlock:^{

 85         CGFloat scale = [sender tag] == 20 ? 1.2 : 0.8;

 86         _btn.transform = CGAffineTransformScale(_btn.transform, scale, scale);

 87     }];

 88 }

 89 

 90 #pragma mark 左旋转\右旋转

 91 - (IBAction)rotate:(id)sender {

 92 //    _angle -= M_PI_4;

 93     

 94     // 弧度 3.14 - π

 95     // 角度 180

 96     // 向左旋转45°

 97 //    _btn.transform = CGAffineTransformMakeRotation(- M_PI_4);

 98 //    _btn.transform = CGAffineTransformRotate(_btn.transform, M_PI_4 * (10 == tag?-1:1));

 99     

100     [self btnClickWithBlock:^{

101         int tag = [sender tag];

102         if (10 == tag) { //

103             _btn.transform = CGAffineTransformRotate(_btn.transform, M_PI_4 * -1);

104         } else { //

105             _btn.transform = CGAffineTransformRotate(_btn.transform, M_PI_4 * 1);

106         }

107     }];

108 }

109 

110 #pragma mark 重置

111 - (IBAction)reset:(id)sender {

112     // 清空之前所有的形变状态(消除以前的旋转、缩放等状态)

113 //    _btn.transform = CGAffineTransformIdentity;

114     [self btnClickWithBlock:^{

115         _btn.transform = CGAffineTransformIdentity;

116     }];

117 }

118 @end

 

八、实例、简易图片浏览器

 

iOS- UIButton/UIImageView/UISlider/UISwitch操作

 

ViewController.h

 1 #import <UIKit/UIKit.h>

 2 

 3 @interface ViewController : UIViewController

 4 - (IBAction)nightMode:(UISwitch *)sender;

 5 - (IBAction)imageSizeChange:(UISlider *)sender;

 6 - (IBAction)setting;

 7 - (IBAction)sliderValueChange:(UISlider *)sender;

 8 @property (weak, nonatomic) IBOutlet UIImageView *imageView;

 9 @property (weak, nonatomic) IBOutlet UILabel *imageNo;

10 @property (weak, nonatomic) IBOutlet UILabel *imageDesc;

11 @property (weak, nonatomic) IBOutlet UIView *settingView;

12 

13 @end

ViewController.m

 1 #import "ViewController.h"

 2 

 3 @interface ViewController ()

 4 {

 5     NSArray *_allDescs;

 6 }

 7 @end

 8 

 9 @implementation ViewController

10 

11 #pragma mark 控制器的view加载完毕后会调用一次

12 - (void)viewDidLoad

13 {

14     [super viewDidLoad];

15     

16     // 1.获得所有的描述(通过解析plist文件来创建数组对象,比如传入文件的全路径)

17     // 如果要访问项目中资源包里面的所有资源。应该用mainBundle

18     NSBundle *bundle = [NSBundle mainBundle];

19     // 获得文件的全路径

20     NSString *path = [bundle pathForResource:@"descs" ofType:@"plist"];

21     // 加载path对应的文件来创建数组 

22     _allDescs = [NSArray arrayWithContentsOfFile:path];

23     

24     // 2.设置默认的描述

25     _imageDesc.text = _allDescs[0];

26 }

27 

28 #pragma mark 夜间模式

29 - (IBAction)nightMode:(UISwitch *)sender {

30     if (sender.on) { //

31         self.view.backgroundColor = [UIColor darkGrayColor];

32     } else { //

33         self.view.backgroundColor = [UIColor whiteColor];

34     }

35 }

36 

37 #pragma mark 图片尺寸改变了

38 - (IBAction)imageSizeChange:(UISlider *)sender {

39 //    // 1.取出frame

40 //    CGRect tempFrame = _imageView.frame;

41 //    

42 //    // 2.修改frame

43 //    tempFrame.size.width = sender.value * 320;

44 //    tempFrame.size.height = sender.value * 100;

45 //    

46 //    // 3.重新赋值frame

47 //    _imageView.frame = tempFrame;

48     

49     _imageView.transform = CGAffineTransformMakeScale(sender.value, sender.value);

50 }

51 

52 #pragma mark 点击了设置

53 - (IBAction)setting {

54     [UIView beginAnimations:nil context:nil];

55     [UIView setAnimationDuration:0.5];

56     

57     // 1.取出中点

58     CGPoint tempCenter = _settingView.center;

59     

60     // 2.修改y值

61 //    tempCenter.y -= _settingView.frame.size.height;

62     

63     if (_settingView.frame.origin.y == self.view.frame.size.height) { // 设置界面目前看不见

64         tempCenter.y -= _settingView.bounds.size.height;

65     } else { // 能看见设置界面

66         tempCenter.y += _settingView.bounds.size.height;

67     }

68     

69     // 3.重新赋值

70     _settingView.center = tempCenter;

71     

72     [UIView commitAnimations];

73 }

74 

75 #pragma mark slider值改变

76 - (IBAction)sliderValueChange:(UISlider *)sender {

77     // 1.设置中间的图片

78     // 获得图片名称  %.f 不保留任何小数

79     NSString *imageName = [NSString stringWithFormat:@"%.f.png", sender.value];

80     _imageView.image = [UIImage imageNamed:imageName];

81     

82     // 2.设置序号(第几张)

83     _imageNo.text = [NSString stringWithFormat:@"%.f/16", sender.value + 1];

84     

85     // 3.设置描述

86     int no = (int)(sender.value + 0.5);

87     _imageDesc.text = _allDescs[no];

88 }

89 @end

 

                                                                  Thanks! 清澈Saup

你可能感兴趣的:(imageview)