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"];
七、实例、按钮操作(移动/放大/旋转)
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
八、实例、简易图片浏览器
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