iOS- UIButton/UIImageView/UISlider/UISwitch操作       一、控件的属性                             二、添加控件到控制器的view                        四、viewDidLoad                             五、UISlider                                 六、Plist文件的使用                              七、NSBundle的使用                           七、实例、按钮操作(移动/放大/旋转)                                             八、实例、简易图片浏览器

 

如果看不到图片 可以尝试更换浏览器(推荐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操作
 
 
 
一、控件的属性                            
二、添加控件到控制器的view                       
四、viewDidLoad                          
 
五、UISlider                              
 
六、Plist文件的使用                           
 
七、NSBundle的使用                          
七、实例、按钮操作(移动/放大/旋转)                 
                          
八、实例、简易图片浏览器                          

 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操作
 
 
 
一、控件的属性                            
二、添加控件到控制器的view                       
四、viewDidLoad                          
 
五、UISlider                              
 
六、Plist文件的使用                           
 
七、NSBundle的使用                          
七、实例、按钮操作(移动/放大/旋转)                 
                          
八、实例、简易图片浏览器

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