# UILabel
//0.创建一个UILabel UILabel继承与UIView
UILabel *myLabel = [[UILabel alloc] initWithFrame:CGRectMake(50, 50, 200, 60)];
** //1.设置文本属性**
myLabel.text = @"好好学习,天天向上。";
**//2.设置文本字体的颜色**
myLabel.textColor = [UIColor redColor];
**//3.设置背景颜色**
myLabel.backgroundColor = [UIColor greenColor];
**//4.设置字体的尺寸**
//常规
myLabel.font = [UIFont systemFontOfSize:30];
** //粗体**
myLabel.font = [UIFont boldSystemFontOfSize:30];
**//5.行数设置 默认为1 表示单行 ,0就表示没有限制 前提是范围足够大 就会自动换行**
myLabel.numberOfLines = 0;
**//6.设置文本的打断(内容显示不全的情况省略哪一部分)**
/*
NSLineBre akByTruncatingHead, Truncate at head of line: "...wxyz"
NSLineBreakByTruncatingTail, Truncate at tail of line: "abcd..."
NSLineBreakByTruncatingMiddle Truncate middle of line: "ab...yz"
*/
myLabel.lineBreakMode = NSLineBreakByTruncatingMiddle;
**//7.设置阴影 (先设置范围,再设置颜色)**
myLabel.shadowOffset = CGSizeMake(2, -2);
myLabel.shadowColor = [UIColor brownColor];
**//8.高亮状态下显示的颜色
//设置处于高亮状态**
myLabel.highlighted = YES;
**设置高亮状态下文本的颜色**
myLabel.highlightedTextColor = [UIColor blueColor];
9.**设置tag值**
mylabel.tag = 110;
10.**设置文本的对齐方式**
/*
NSTextAlignmentLeft = 0, // Visually left aligned
TARGET_OS_IPHONE
NSTextAlignmentCenter = 1, // Visually centered
NSTextAlignmentRight = 2, // Visually right aligned
*/
myLabel.textAlignment = NSTextAlignmentCenter;//1
** 11.是否响应用户交互 默认为NO**
mylabel.userInteractionEnabled = YES;
**12.响应事件 默认情况下是开启**
myLabel.enabled = NO;
**13自动调整尺寸大小
//让字体适应尺寸**
mylabel.adjustsFontSizeToFitWidth = YES;
**尺寸适应字体**
[mylabel sizeToFit];
**获取tag值对应的label **
UILabel *label = [self.view viewWithTag:1001];
#UILabel附加
NSString *str = @"今天天气好晴朗,处处好风光";
1. **初始化一个副文本属性**
NSMutableAttributedString *atteibutedString = [[NSMutableAttributedString alloc] initWithString:str];
2. **索引指定文字的范围**
NSRange range = [str rangeOfString:@"天气"];
3. ** 给副文本增加属性**
[atteibutedString addAttribute:NSForegroundColorAttributeName value:[UIColor blueColor] range:range];
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(100, 100, 300, 40)];
label.font = [UIFont systemFontOfSize:26];
label.attributedText = atteibutedString;
[self.view addSubview:label];
# UIImageView
/*
* UIImageView
* 1.显示单张图片
* 2.播放一组图片动画
* iOS里面 默认是png的图片格式 可以不写后缀
* 会自动根据 屏幕材质选择使用不同的 分辨率图片。前提是命名规范
* image.png image@2x.png image@3x.png
*/
1. **创建一个UIImageView视图**
//UIImage 继承与NSObject
//UIImageView 继承与UIView
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(100, 100, 200, 200)];
2. **背景颜色**
imageView.backgroundColor = [UIColor yellowColor];
3. **添加图片**
//创建UIImage对象
UIImage *image = [UIImage imageNamed:@"img.jpeg"];
imageView.image = image;
4. **设置显示的当前图片内容模式**
/*
UIViewContentModeScaleToFill, 拉满铺满视图 默认
UIViewContentModeScaleAspectFit, 自适应拉伸 不会破坏当前宽高比例
UIViewContentModeScaleAspectFill, 可以超出视图范围 不会破坏当前宽高比例
*/
imageView.contentMode = UIViewContentModeScaleAspectFill;
5. **内容剪裁**
imageView.clipsToBounds = YES;
6. **高亮状态**
//高亮状态下的图片
imageView.highlightedImage = [UIImage imageNamed:@"image"];
** 开启 先设置高亮状态下的图片 然后再开启// default is NO**
imageView.highlighted = YES;7. **用户交互** //imageView是默认没开启用户交互的/* 如果讲一个按钮[UIButton] 作为imageView的子视图,默认是无法点击 UIImageView是默认不响应用户交互的 UIImageView会影响子视图 如果UIImageView不响应用户交互 它上面的子视图全部都不响应 */ **开启用户交互** imageView.userInteractionEnabled = YES; 8. **设置tag值** imageView.tag = 1001; [self.view addSubview:imageView];//[self.view addSubview:image];//这个是不可以的 addSubview 只能添加视图9. **创建一个装载图片的数组** NSMutableArray *imageArray = [NSMutableArray array];for (int i = 1; i <= 21; i++) { **获取图片的名字** NSString *imageName = [NSString stringWithFormat:@"%d.jpg",i]; //获取图片 UIImage *image = [UIImage imageNamed:imageName]; //把获取到的图片加入数组中 [imageArray addObject:image];}**新创建一个UIImageView** UIImageView *gifImageView = [[UIImageView alloc] initWithFrame:CGRectMake(50, 350, 300, 300)]; gifImageView.backgroundColor = [UIColor redColor]; [self.view addSubview:gifImageView]; //将图片添加到gifImageView gifImageView.animationImages = imageArray; 10.**动画的时长** gifImageView.animationDuration = 1; 11. **动画是否重复** gifImageView.animationRepeatCount = 0; 12. **手动开启动画** [gifImageView startAnimating]; 13. **让动画暂停** [gifImageView stopAnimating]; 14. **延时调用** [self performSelector:@selector(stop:) withObject:gifImageView afterDelay:3]; - (void)stop:(UIImageView *)sender { [sender stopAnimating];}# UIControl/* * UIControl * 可以用它的子类来具体的控制 [点击、滑动] *子类有:UIButton,UITextField,UISlider,UISwitch,UIDatePicker,UIPageControl,UISegmentedControl * 自定义控件对象 [系统提供的控件没有适合我的,我就自己去创造(封装)一个处理事件的控件] * */ 1. **创建一个UIControl ** UIControl *control = [[UIControl alloc] initWithFrame:CGRectMake(30, 30, 100, 100 )]; control.backgroundColor = [UIColor blueColor]; [self.view addSubview:control];2. /* * UIControl 可以为控件绑定一个目标 动作 及 触摸时机 * 可以 多个控件 绑定一个 目标动作 * 可以 一个控件 绑定多个 目标动作 * addTarget:可以是任意对象的响应 * action:动作 * forControlEvents: 事件[点击就松手...] */ **点击后松手且位置处于控件区域** [control addTarget:self action:@selector(touchUpInsideAction) forControlEvents:UIControlEventTouchUpInside]; ** 点击之后立刻响应** [control addTarget:self action:@selector(touchDownAction) forControlEvents:UIControlEventTouchDown]; **拖拽滑动了** [control addTarget:self action:@selector(touchDragInside) forControlEvents:UIControlEventTouchDragInside]; **触摸取消 [触摸还在发生的时候,屏幕失去了焦点 例如:电话、锁屏]** [control addTarget:self action:@selector(touchCancel) forControlEvents:UIControlEventTouchCancel]; }- (void)touchUpInsideAction { NSLog(@"点击之后且松手的时候也在该控件区域");}- (void)touchDownAction { NSLog(@"点击之后立刻响应");}- (void)touchDragInside { NSLog(@"滑动拖拽的时候响应(在内部)");}- (void)touchCancel { NSLog(@"取消");}#UIControl深入用法//创建一个继承于UIComtrol的子类JokerControl//让JokerControl成一个控件类1. **触摸开始**- (BOOL)beginTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event { //UITouch 触摸对象 指触摸的时候屏幕上面的手指 //获取到触摸所在视图的点的位置 CGPoint touchPoint = [touch locationInView:self];//本视图上面的位置 NSLog(@"获取触摸所在视图上的位置:%@",NSStringFromCGPoint(touchPoint)); return YES;}2.**触摸继续**- (BOOL)continueTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event { NSLog(@"一直在触摸中"); //根据触摸对象 获取到触摸点 CGPoint touchPoint = [touch locationInView:self]; NSLog(@"获取触摸所在视图上的位置:%@",NSStringFromCGPoint(touchPoint)); return YES;}3. **触摸结束**- (void)endTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event { //获取到结束的时候 触摸点在哪 CGPoint touchPoint = [touch locationInView:self]; //判断触摸点 是否在矩形范围内 self.bounds当前矩形大 //第一个参数:需要进行判断的矩形大小 //第二个参数:当前的触摸点 //返回值:布尔类型 CGRectContainsPoint(self.bounds, touchPoint); if (CGRectContainsPoint(self.bounds, touchPoint)) { NSLog(@"在触摸范围内"); }else { NSLog(@"不在触摸范围内"); } //在切换的时候,发送事件的变化 然后UIControl的Action接收事件发送 [self sendActionsForControlEvents:UIControlEventEditingDidEnd];}4.**取消**- (void)cancelTrackingWithEvent:(UIEvent *)event { }**更新UI界面,给予动态效果 [UIView animateWithDuration:0.3f animations:^{ changeView.transform = CGAffineTransformMakeScale(1.5, 1.5); } completion:^(BOOL finished) { changeView.transform = CGAffineTransformIdentity; }];** #UIButton1. **手动创建按钮** // UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(200, 200, 100, 100)]; //UIButtonTypeCustom 自定义外观 UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; button.frame = CGRectMake(50, 200, 100, 100); 2.** 设置背影颜色** button.backgroundColor = [UIColor grayColor];3. **绑定目标动作** addTarget:可以是任意对象的响应 action:动作 forControlEvents: 事件[点击就松手...] [button addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside]; 4. **设置一个标题** [button setTitle:@"普通状态" forState:UIControlStateNormal]; [button setTitleColor:[UIColor grayColor] forState:UIControlStateNormal]; [button setTitle:@"收藏成功" forState:UIControlStateSelected]; [button setTitleColor:[UIColor redColor] forState:UIControlStateSelected];5. **设置图片** setImage:forState: 使用的是图片的原始大小 让按钮显示的很精致 如果frame够大 点击也很方便 //setBackgroundImage: 设置成功幕后背景 但是会拉伸图片 /* UIControlStateNormal UIControlStateHighlighted //used when UIControl isHighlighted is set UIControlStateDisabled UIControlStateSelected //flag usable by app (see below) UIControlStateFocused // Applicable only when the screen supports focus UIControlStateApplication // additional flags available for application use UIControlStateReserved //flags reserved for internal framework use */ [button setImage:[UIImage imageNamed:@"playing_btn_love@2x"] forState:UIControlStateNormal]; [button setImage:[UIImage imageNamed:@"playing_btn_in_myfavor_h@2x"] forState:UIControlStateHighlighted]; [button setImage:[UIImage imageNamed:@"playing_btn_in_myfavor@2x"] forState:UIControlStateSelected];6.**设置背影图片** [button setBackgroundImage:[UIImage imageNamed:@"playing_btn_love@2x"] forState:UIControlStateNormal]; [button setBackgroundImage:[UIImage imageNamed:@"playing_btn_in_myfavor@2x"] forState:UIControlStateSelected];7. **和用户交互有关的属性** //不可以交互 继承与UIControl的属性 会影响界面 button.enabled = NO; default is YES. if NO, ignores touch events and subclasses may draw differently默认是是。如果没有,忽略触摸事件和子类可能会有不同的绘制 //继承于UIView 和视图有关的 不可以交互 button.userInteractionEnabled = NO; // default is NO #封装UIButton**为什么我们要自己来封装一个控件? 有时候,我们在使用Apple提供的这些控件中,有的不适合我们的项目。那么我们对其进行一个“改造”。创造利于我们开发的一些控件。会节省时间,节省代码量。 ** + (MMButton *)button { 1. **通过父类的方法创建** MMButton *button = [MMButton buttonWithType:UIButtonTypeCustom]; 2. **在初始化的时候 设置开关打开**// self.isOn = YES; //在这里 类方法中 self 指代是 类 button.isOn = YES; 3. **设置背景图片** [button setBackgroundImage:[self creatImageWithName:@"green-out"] forState:UIControlStateNormal]; [button setBackgroundImage:[self creatImageWithName:@"green-in"] forState:UIControlStateHighlighted]; 4. **系统按钮 设置标题** [button setTitle:@"开" forState:UIControlStateNormal]; [button setTitle:@"开" forState:UIControlStateHighlighted]; 5. **字体颜色** [button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; [button setTitleColor:[UIColor lightGrayColor] forState:UIControlStateHighlighted]; 6. **字体** button.titleLabel.font = [UIFont boldSystemFontOfSize:27.f]; 7. **增加开关的动作** [button addTarget:button action:@selector(buttonTap:) forControlEvents:UIControlEventTouchUpInside]; 8. **放大** [button addTarget:button action:@selector(zoomScale:) forControlEvents:UIControlEventTouchDown]; return button;}9. **这个是button被点击之后要做的事情**- (void)buttonTap:(MMButton *)button { //按钮状态要切换 self.isOn = !self.isOn; if (_isOn) { //设置背景图片 [button setBackgroundImage:[self creatImageWithName:@"green-out"] forState:UIControlStateNormal]; [button setBackgroundImage:[self creatImageWithName:@"green-in"] forState:UIControlStateHighlighted]; //系统按钮 设置标题 [button setTitle:@"开" forState:UIControlStateNormal]; [button setTitle:@"开" forState:UIControlStateHighlighted]; //字体颜色 [button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; [button setTitleColor:[UIColor lightGrayColor] forState:UIControlStateHighlighted]; //字体 button.titleLabel.font = [UIFont boldSystemFontOfSize:27.f]; }else{ //设置背景图片 [button setBackgroundImage:[self creatImageWithName:@"red-out"] forState:UIControlStateNormal]; [button setBackgroundImage:[self creatImageWithName:@"red-in"] forState:UIControlStateHighlighted]; //系统按钮 设置标题 [button setTitle:@"关" forState:UIControlStateNormal]; [button setTitle:@"关" forState:UIControlStateHighlighted]; //字体颜色 [button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; [button setTitleColor:[UIColor lightGrayColor] forState:UIControlStateHighlighted]; //字体 button.titleLabel.font = [UIFont boldSystemFontOfSize:27.f]; } [self identity:button]; /* [UIView animateWithDuration:0.3 animations:^{ button.transform = CGAffineTransformMakeScale(1.2, 1.2); }completion:^(BOOL finished) { button.transform = CGAffineTransformIdentity; } ]; */}10.**放大**- (void)zoomScale:(MMButton *)button { [UIView animateWithDuration:0.3 animations:^{ button.transform = CGAffineTransformMakeScale(1.2, 1.2); }];}11. **还原**- (void)identity:(MMButton *)button { [UIView animateWithDuration:0.3 animations:^{ button.transform = CGAffineTransformIdentity; }];}12. **将图片拉伸的方法**+ (UIImage *)creatImageWithName:(NSString *)name { //UIEdgeInsetsMake:CGFloat top, CGFloat left, CGFloat bottom, CGFloat right //拉伸图片 在图片的上 左 下 右 4个边缘指定要拉伸的部分。UIEdgeInsetsMake是个结构体。不需要拉伸的地方就传0,表示拉伸为0 return [[UIImage imageNamed:name] resizableImageWithCapInsets:UIEdgeInsetsMake(0.0, 110.0, 0.0, 110.0)];}- (UIImage *)creatImageWithName:(NSString *)name { return [[UIImage imageNamed:name] resizableImageWithCapInsets:UIEdgeInsetsMake(0.0, 110.0, 0.0, 110.0)];} #UITextField// 文本框 UITextFiled 继承与 UIControl0. **创建UITextFiled** UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(100, 100, 200, 60)]; 1.**设置tag值*** textField.tag = 1001; 2. **外框的风格** /* UITextBorderStyleNone, UITextBorderStyleLine, UITextBorderStyleBezel, 凹进去 UITextBorderStyleRoundedRect 圆角 */ textField.borderStyle = UITextBorderStyleRoundedRect; 3.**设置 文本框的内容/ 获取 文本框的内容 ** NSString *str = textField.text; textField.text = @"hello world"; 4.**字体** textField.font = [UIFont boldSystemFontOfSize:14];// textField.font = [UIFont systemFontOfSize:<#(CGFloat)#>]; 5.**对齐方式** textField.textAlignment = NSTextAlignmentCenter; 6. **输入提示** textField.placeholder = @"请输入密码"; 7. **设置键盘的样式** textField.keyboardType = UIKeyboardTypeDefault;//默认的 8. **是否支持清除** //这个清除按钮什么时候显示 textField.clearButtonMode = UITextFieldViewModeAlways; //默认是NO 设置为YES时,当输入完成之后,再次让这个UITextFiled成为第一个响应者的时候 就清空上次输入的内容 textField.clearsOnBeginEditing = YES; 9. **是否可用** textField.enabled = NO; 继承与UIControl textField.userInteractionEnabled = NO; 10. **安全输入(输入密码的情况下)** textField.secureTextEntry = YES; 11. **设置键盘右下角的类型** textField.returnKeyType = UIReturnKeyDone; 12. **设置文本框的代理** textField.delegate = self; 13. **文本框将要修改内容的时候** - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { //string => 新输入的内容 NSLog(@"string == %@",string); //range 新内容所在的位置 NSLog(@"range = %@",NSStringFromRange(range)); //模拟输入手机号码 给用户限定11位数 if (range.location <= 10) { return YES; } //返回NO 输入框的内容将不会改变 return NO; }- (BOOL)textFieldShouldReturn:(UITextField *)textField { //当用户点击了返回这个按钮 收起键盘 发送文本 [textField resignFirstResponder]; NSLog(@"%@",textField.text); //是否返回 return YES;}- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField { NSLog(@"文本框开始编辑"); //让键盘失去对应的响应 // [self.view endEditing:YES]; //如果返回的是NO 那么文本框就不允许编辑 键盘不会弹出 return YES;}- (void)textFieldDidBeginEditing:(UITextField *)textField { // became first responder NSLog(@"文本框已经在编辑的时候"); //让键盘失去对应的响应 [self.view endEditing:YES]; }- (BOOL)textFieldShouldEndEditing:(UITextField *)textField { NSLog(@"文本框快要结束编辑的时候"); return YES;}- (void)textFieldDidEndEditing:(UITextField *)textField { NSLog(@"已经结束编辑的时候"); }#UISlider //UISlider 继承与 UIControl1.**创建UISlider**//height是指整个UISlider控件的高度 而不是指 线 的宽度!! UISlider *slider = [[UISlider alloc] initWithFrame:CGRectMake(50, 100, 270, 30)];2. **颜色** slider.backgroundColor = [UIColor brownColor]; 3. **添加事件** [slider addTarget:self action:@selector(sliderAction:) forControlEvents:UIControlEventValueChanged]; //silder 是value发生变化 //button 点击 //textField 点击 编辑 4. **设置最大/最小值** slider.maximumValue = 10; slider.minimumValue = 0; 5. **设置是否连续响应 默认是YES (当整个触摸事件结束后才会响应[当value发生变化结束后才会响应])** slider.continuous = NO; 6. **设置最大/最小轨迹的颜色** slider.maximumTrackTintColor = [UIColor redColor]; slider.minimumTrackTintColor = [UIColor greenColor]; 7.**设置轨迹图片** [slider setMinimumTrackImage:[UIImage imageNamed:@"Star-Gold"] forState:UIControlStateNormal]; [slider setMaximumTrackImage:[UIImage imageNamed:@"Star-White-Half"] forState:UIControlStateNormal]; 8. **设置大头针** [slider setThumbImage:[UIImage imageNamed:@"Star-Gold"] forState:UIControlStateNormal]; 9. **设置最大/最小值得图片** [slider setMinimumValueImage:[UIImage imageNamed:@"Star-Gold"]]; [slider setMaximumValueImage:[UIImage imageNamed:@"Star-White-Half"]]; 10. **模拟音乐播放器的进度条** [NSTimer scheduledTimerWithTimeInterval:1.f target:self selector:@selector(timeAction:) userInfo:slider repeats:YES]; }- (void)sliderAction:(UISlider *)sender { NSLog(@"%.2f",sender.value); _index = sender.value;}- (void)timeAction:(NSTimer *)sender { _index ++; //利用tag值拿到 //sender.userInfo 拿到 slider UISlider *slider = sender.userInfo; //给slider设置值 [slider setValue:_index animated:YES]; }
//0.创建一个UILabel UILabel继承与UIView
UILabel *myLabel = [[UILabel alloc] initWithFrame:CGRectMake(50, 50, 200, 60)];
** //1.设置文本属性**
myLabel.text = @"好好学习,天天向上。";
**//2.设置文本字体的颜色**
myLabel.textColor = [UIColor redColor];
**//3.设置背景颜色**
myLabel.backgroundColor = [UIColor greenColor];
**//4.设置字体的尺寸**
//常规
myLabel.font = [UIFont systemFontOfSize:30];
** //粗体**
myLabel.font = [UIFont boldSystemFontOfSize:30];
**//5.行数设置 默认为1 表示单行 ,0就表示没有限制 前提是范围足够大 就会自动换行**
myLabel.numberOfLines = 0;
**//6.设置文本的打断(内容显示不全的情况省略哪一部分)**
/*
NSLineBre akByTruncatingHead, Truncate at head of line: "...wxyz"
NSLineBreakByTruncatingTail, Truncate at tail of line: "abcd..."
NSLineBreakByTruncatingMiddle Truncate middle of line: "ab...yz"
*/
myLabel.lineBreakMode = NSLineBreakByTruncatingMiddle;
**//7.设置阴影 (先设置范围,再设置颜色)**
myLabel.shadowOffset = CGSizeMake(2, -2);
myLabel.shadowColor = [UIColor brownColor];
**//8.高亮状态下显示的颜色
//设置处于高亮状态**
myLabel.highlighted = YES;
**设置高亮状态下文本的颜色**
myLabel.highlightedTextColor = [UIColor blueColor];
9.**设置tag值**
mylabel.tag = 110;
10.**设置文本的对齐方式**
/*
NSTextAlignmentLeft = 0, // Visually left aligned
TARGET_OS_IPHONE
NSTextAlignmentCenter = 1, // Visually centered
NSTextAlignmentRight = 2, // Visually right aligned
*/
myLabel.textAlignment = NSTextAlignmentCenter;//1
** 11.是否响应用户交互 默认为NO**
mylabel.userInteractionEnabled = YES;
**12.响应事件 默认情况下是开启**
myLabel.enabled = NO;
**13自动调整尺寸大小
//让字体适应尺寸**
mylabel.adjustsFontSizeToFitWidth = YES;
**尺寸适应字体**
[mylabel sizeToFit];
**获取tag值对应的label **
UILabel *label = [self.view viewWithTag:1001];
#UILabel附加
NSString *str = @"今天天气好晴朗,处处好风光";
1. **初始化一个副文本属性**
NSMutableAttributedString *atteibutedString = [[NSMutableAttributedString alloc] initWithString:str];
2. **索引指定文字的范围**
NSRange range = [str rangeOfString:@"天气"];
3. ** 给副文本增加属性**
[atteibutedString addAttribute:NSForegroundColorAttributeName value:[UIColor blueColor] range:range];
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(100, 100, 300, 40)];
label.font = [UIFont systemFontOfSize:26];
label.attributedText = atteibutedString;
[self.view addSubview:label];
# UIImageView
/*
* UIImageView
* 1.显示单张图片
* 2.播放一组图片动画
* iOS里面 默认是png的图片格式 可以不写后缀
* 会自动根据 屏幕材质选择使用不同的 分辨率图片。前提是命名规范
* image.png image@2x.png image@3x.png
*/
1. **创建一个UIImageView视图**
//UIImage 继承与NSObject
//UIImageView 继承与UIView
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(100, 100, 200, 200)];
2. **背景颜色**
imageView.backgroundColor = [UIColor yellowColor];
3. **添加图片**
//创建UIImage对象
UIImage *image = [UIImage imageNamed:@"img.jpeg"];
imageView.image = image;
4. **设置显示的当前图片内容模式**
/*
UIViewContentModeScaleToFill, 拉满铺满视图 默认
UIViewContentModeScaleAspectFit, 自适应拉伸 不会破坏当前宽高比例
UIViewContentModeScaleAspectFill, 可以超出视图范围 不会破坏当前宽高比例
*/
imageView.contentMode = UIViewContentModeScaleAspectFill;
5. **内容剪裁**
imageView.clipsToBounds = YES;
6. **高亮状态**
//高亮状态下的图片
imageView.highlightedImage = [UIImage imageNamed:@"image"];
** 开启 先设置高亮状态下的图片 然后再开启// default is NO**
imageView.highlighted = YES;7. **用户交互** //imageView是默认没开启用户交互的/* 如果讲一个按钮[UIButton] 作为imageView的子视图,默认是无法点击 UIImageView是默认不响应用户交互的 UIImageView会影响子视图 如果UIImageView不响应用户交互 它上面的子视图全部都不响应 */ **开启用户交互** imageView.userInteractionEnabled = YES; 8. **设置tag值** imageView.tag = 1001; [self.view addSubview:imageView];//[self.view addSubview:image];//这个是不可以的 addSubview 只能添加视图9. **创建一个装载图片的数组** NSMutableArray *imageArray = [NSMutableArray array];for (int i = 1; i <= 21; i++) { **获取图片的名字** NSString *imageName = [NSString stringWithFormat:@"%d.jpg",i]; //获取图片 UIImage *image = [UIImage imageNamed:imageName]; //把获取到的图片加入数组中 [imageArray addObject:image];}**新创建一个UIImageView** UIImageView *gifImageView = [[UIImageView alloc] initWithFrame:CGRectMake(50, 350, 300, 300)]; gifImageView.backgroundColor = [UIColor redColor]; [self.view addSubview:gifImageView]; //将图片添加到gifImageView gifImageView.animationImages = imageArray; 10.**动画的时长** gifImageView.animationDuration = 1; 11. **动画是否重复** gifImageView.animationRepeatCount = 0; 12. **手动开启动画** [gifImageView startAnimating]; 13. **让动画暂停** [gifImageView stopAnimating]; 14. **延时调用** [self performSelector:@selector(stop:) withObject:gifImageView afterDelay:3]; - (void)stop:(UIImageView *)sender { [sender stopAnimating];}# UIControl/* * UIControl * 可以用它的子类来具体的控制 [点击、滑动] *子类有:UIButton,UITextField,UISlider,UISwitch,UIDatePicker,UIPageControl,UISegmentedControl * 自定义控件对象 [系统提供的控件没有适合我的,我就自己去创造(封装)一个处理事件的控件] * */ 1. **创建一个UIControl ** UIControl *control = [[UIControl alloc] initWithFrame:CGRectMake(30, 30, 100, 100 )]; control.backgroundColor = [UIColor blueColor]; [self.view addSubview:control];2. /* * UIControl 可以为控件绑定一个目标 动作 及 触摸时机 * 可以 多个控件 绑定一个 目标动作 * 可以 一个控件 绑定多个 目标动作 * addTarget:可以是任意对象的响应 * action:动作 * forControlEvents: 事件[点击就松手...] */ **点击后松手且位置处于控件区域** [control addTarget:self action:@selector(touchUpInsideAction) forControlEvents:UIControlEventTouchUpInside]; ** 点击之后立刻响应** [control addTarget:self action:@selector(touchDownAction) forControlEvents:UIControlEventTouchDown]; **拖拽滑动了** [control addTarget:self action:@selector(touchDragInside) forControlEvents:UIControlEventTouchDragInside]; **触摸取消 [触摸还在发生的时候,屏幕失去了焦点 例如:电话、锁屏]** [control addTarget:self action:@selector(touchCancel) forControlEvents:UIControlEventTouchCancel]; }- (void)touchUpInsideAction { NSLog(@"点击之后且松手的时候也在该控件区域");}- (void)touchDownAction { NSLog(@"点击之后立刻响应");}- (void)touchDragInside { NSLog(@"滑动拖拽的时候响应(在内部)");}- (void)touchCancel { NSLog(@"取消");}#UIControl深入用法//创建一个继承于UIComtrol的子类JokerControl//让JokerControl成一个控件类1. **触摸开始**- (BOOL)beginTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event { //UITouch 触摸对象 指触摸的时候屏幕上面的手指 //获取到触摸所在视图的点的位置 CGPoint touchPoint = [touch locationInView:self];//本视图上面的位置 NSLog(@"获取触摸所在视图上的位置:%@",NSStringFromCGPoint(touchPoint)); return YES;}2.**触摸继续**- (BOOL)continueTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event { NSLog(@"一直在触摸中"); //根据触摸对象 获取到触摸点 CGPoint touchPoint = [touch locationInView:self]; NSLog(@"获取触摸所在视图上的位置:%@",NSStringFromCGPoint(touchPoint)); return YES;}3. **触摸结束**- (void)endTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event { //获取到结束的时候 触摸点在哪 CGPoint touchPoint = [touch locationInView:self]; //判断触摸点 是否在矩形范围内 self.bounds当前矩形大 //第一个参数:需要进行判断的矩形大小 //第二个参数:当前的触摸点 //返回值:布尔类型 CGRectContainsPoint(self.bounds, touchPoint); if (CGRectContainsPoint(self.bounds, touchPoint)) { NSLog(@"在触摸范围内"); }else { NSLog(@"不在触摸范围内"); } //在切换的时候,发送事件的变化 然后UIControl的Action接收事件发送 [self sendActionsForControlEvents:UIControlEventEditingDidEnd];}4.**取消**- (void)cancelTrackingWithEvent:(UIEvent *)event { }**更新UI界面,给予动态效果 [UIView animateWithDuration:0.3f animations:^{ changeView.transform = CGAffineTransformMakeScale(1.5, 1.5); } completion:^(BOOL finished) { changeView.transform = CGAffineTransformIdentity; }];** #UIButton1. **手动创建按钮** // UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(200, 200, 100, 100)]; //UIButtonTypeCustom 自定义外观 UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; button.frame = CGRectMake(50, 200, 100, 100); 2.** 设置背影颜色** button.backgroundColor = [UIColor grayColor];3. **绑定目标动作** addTarget:可以是任意对象的响应 action:动作 forControlEvents: 事件[点击就松手...] [button addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside]; 4. **设置一个标题** [button setTitle:@"普通状态" forState:UIControlStateNormal]; [button setTitleColor:[UIColor grayColor] forState:UIControlStateNormal]; [button setTitle:@"收藏成功" forState:UIControlStateSelected]; [button setTitleColor:[UIColor redColor] forState:UIControlStateSelected];5. **设置图片** setImage:forState: 使用的是图片的原始大小 让按钮显示的很精致 如果frame够大 点击也很方便 //setBackgroundImage: 设置成功幕后背景 但是会拉伸图片 /* UIControlStateNormal UIControlStateHighlighted //used when UIControl isHighlighted is set UIControlStateDisabled UIControlStateSelected //flag usable by app (see below) UIControlStateFocused // Applicable only when the screen supports focus UIControlStateApplication // additional flags available for application use UIControlStateReserved //flags reserved for internal framework use */ [button setImage:[UIImage imageNamed:@"playing_btn_love@2x"] forState:UIControlStateNormal]; [button setImage:[UIImage imageNamed:@"playing_btn_in_myfavor_h@2x"] forState:UIControlStateHighlighted]; [button setImage:[UIImage imageNamed:@"playing_btn_in_myfavor@2x"] forState:UIControlStateSelected];6.**设置背影图片** [button setBackgroundImage:[UIImage imageNamed:@"playing_btn_love@2x"] forState:UIControlStateNormal]; [button setBackgroundImage:[UIImage imageNamed:@"playing_btn_in_myfavor@2x"] forState:UIControlStateSelected];7. **和用户交互有关的属性** //不可以交互 继承与UIControl的属性 会影响界面 button.enabled = NO; default is YES. if NO, ignores touch events and subclasses may draw differently默认是是。如果没有,忽略触摸事件和子类可能会有不同的绘制 //继承于UIView 和视图有关的 不可以交互 button.userInteractionEnabled = NO; // default is NO #封装UIButton**为什么我们要自己来封装一个控件? 有时候,我们在使用Apple提供的这些控件中,有的不适合我们的项目。那么我们对其进行一个“改造”。创造利于我们开发的一些控件。会节省时间,节省代码量。 ** + (MMButton *)button { 1. **通过父类的方法创建** MMButton *button = [MMButton buttonWithType:UIButtonTypeCustom]; 2. **在初始化的时候 设置开关打开**// self.isOn = YES; //在这里 类方法中 self 指代是 类 button.isOn = YES; 3. **设置背景图片** [button setBackgroundImage:[self creatImageWithName:@"green-out"] forState:UIControlStateNormal]; [button setBackgroundImage:[self creatImageWithName:@"green-in"] forState:UIControlStateHighlighted]; 4. **系统按钮 设置标题** [button setTitle:@"开" forState:UIControlStateNormal]; [button setTitle:@"开" forState:UIControlStateHighlighted]; 5. **字体颜色** [button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; [button setTitleColor:[UIColor lightGrayColor] forState:UIControlStateHighlighted]; 6. **字体** button.titleLabel.font = [UIFont boldSystemFontOfSize:27.f]; 7. **增加开关的动作** [button addTarget:button action:@selector(buttonTap:) forControlEvents:UIControlEventTouchUpInside]; 8. **放大** [button addTarget:button action:@selector(zoomScale:) forControlEvents:UIControlEventTouchDown]; return button;}9. **这个是button被点击之后要做的事情**- (void)buttonTap:(MMButton *)button { //按钮状态要切换 self.isOn = !self.isOn; if (_isOn) { //设置背景图片 [button setBackgroundImage:[self creatImageWithName:@"green-out"] forState:UIControlStateNormal]; [button setBackgroundImage:[self creatImageWithName:@"green-in"] forState:UIControlStateHighlighted]; //系统按钮 设置标题 [button setTitle:@"开" forState:UIControlStateNormal]; [button setTitle:@"开" forState:UIControlStateHighlighted]; //字体颜色 [button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; [button setTitleColor:[UIColor lightGrayColor] forState:UIControlStateHighlighted]; //字体 button.titleLabel.font = [UIFont boldSystemFontOfSize:27.f]; }else{ //设置背景图片 [button setBackgroundImage:[self creatImageWithName:@"red-out"] forState:UIControlStateNormal]; [button setBackgroundImage:[self creatImageWithName:@"red-in"] forState:UIControlStateHighlighted]; //系统按钮 设置标题 [button setTitle:@"关" forState:UIControlStateNormal]; [button setTitle:@"关" forState:UIControlStateHighlighted]; //字体颜色 [button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; [button setTitleColor:[UIColor lightGrayColor] forState:UIControlStateHighlighted]; //字体 button.titleLabel.font = [UIFont boldSystemFontOfSize:27.f]; } [self identity:button]; /* [UIView animateWithDuration:0.3 animations:^{ button.transform = CGAffineTransformMakeScale(1.2, 1.2); }completion:^(BOOL finished) { button.transform = CGAffineTransformIdentity; } ]; */}10.**放大**- (void)zoomScale:(MMButton *)button { [UIView animateWithDuration:0.3 animations:^{ button.transform = CGAffineTransformMakeScale(1.2, 1.2); }];}11. **还原**- (void)identity:(MMButton *)button { [UIView animateWithDuration:0.3 animations:^{ button.transform = CGAffineTransformIdentity; }];}12. **将图片拉伸的方法**+ (UIImage *)creatImageWithName:(NSString *)name { //UIEdgeInsetsMake:CGFloat top, CGFloat left, CGFloat bottom, CGFloat right //拉伸图片 在图片的上 左 下 右 4个边缘指定要拉伸的部分。UIEdgeInsetsMake是个结构体。不需要拉伸的地方就传0,表示拉伸为0 return [[UIImage imageNamed:name] resizableImageWithCapInsets:UIEdgeInsetsMake(0.0, 110.0, 0.0, 110.0)];}- (UIImage *)creatImageWithName:(NSString *)name { return [[UIImage imageNamed:name] resizableImageWithCapInsets:UIEdgeInsetsMake(0.0, 110.0, 0.0, 110.0)];} #UITextField// 文本框 UITextFiled 继承与 UIControl0. **创建UITextFiled** UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(100, 100, 200, 60)]; 1.**设置tag值*** textField.tag = 1001; 2. **外框的风格** /* UITextBorderStyleNone, UITextBorderStyleLine, UITextBorderStyleBezel, 凹进去 UITextBorderStyleRoundedRect 圆角 */ textField.borderStyle = UITextBorderStyleRoundedRect; 3.**设置 文本框的内容/ 获取 文本框的内容 ** NSString *str = textField.text; textField.text = @"hello world"; 4.**字体** textField.font = [UIFont boldSystemFontOfSize:14];// textField.font = [UIFont systemFontOfSize:<#(CGFloat)#>]; 5.**对齐方式** textField.textAlignment = NSTextAlignmentCenter; 6. **输入提示** textField.placeholder = @"请输入密码"; 7. **设置键盘的样式** textField.keyboardType = UIKeyboardTypeDefault;//默认的 8. **是否支持清除** //这个清除按钮什么时候显示 textField.clearButtonMode = UITextFieldViewModeAlways; //默认是NO 设置为YES时,当输入完成之后,再次让这个UITextFiled成为第一个响应者的时候 就清空上次输入的内容 textField.clearsOnBeginEditing = YES; 9. **是否可用** textField.enabled = NO; 继承与UIControl textField.userInteractionEnabled = NO; 10. **安全输入(输入密码的情况下)** textField.secureTextEntry = YES; 11. **设置键盘右下角的类型** textField.returnKeyType = UIReturnKeyDone; 12. **设置文本框的代理** textField.delegate = self; 13. **文本框将要修改内容的时候** - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { //string => 新输入的内容 NSLog(@"string == %@",string); //range 新内容所在的位置 NSLog(@"range = %@",NSStringFromRange(range)); //模拟输入手机号码 给用户限定11位数 if (range.location <= 10) { return YES; } //返回NO 输入框的内容将不会改变 return NO; }- (BOOL)textFieldShouldReturn:(UITextField *)textField { //当用户点击了返回这个按钮 收起键盘 发送文本 [textField resignFirstResponder]; NSLog(@"%@",textField.text); //是否返回 return YES;}- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField { NSLog(@"文本框开始编辑"); //让键盘失去对应的响应 // [self.view endEditing:YES]; //如果返回的是NO 那么文本框就不允许编辑 键盘不会弹出 return YES;}- (void)textFieldDidBeginEditing:(UITextField *)textField { // became first responder NSLog(@"文本框已经在编辑的时候"); //让键盘失去对应的响应 [self.view endEditing:YES]; }- (BOOL)textFieldShouldEndEditing:(UITextField *)textField { NSLog(@"文本框快要结束编辑的时候"); return YES;}- (void)textFieldDidEndEditing:(UITextField *)textField { NSLog(@"已经结束编辑的时候"); }#UISlider //UISlider 继承与 UIControl1.**创建UISlider**//height是指整个UISlider控件的高度 而不是指 线 的宽度!! UISlider *slider = [[UISlider alloc] initWithFrame:CGRectMake(50, 100, 270, 30)];2. **颜色** slider.backgroundColor = [UIColor brownColor]; 3. **添加事件** [slider addTarget:self action:@selector(sliderAction:) forControlEvents:UIControlEventValueChanged]; //silder 是value发生变化 //button 点击 //textField 点击 编辑 4. **设置最大/最小值** slider.maximumValue = 10; slider.minimumValue = 0; 5. **设置是否连续响应 默认是YES (当整个触摸事件结束后才会响应[当value发生变化结束后才会响应])** slider.continuous = NO; 6. **设置最大/最小轨迹的颜色** slider.maximumTrackTintColor = [UIColor redColor]; slider.minimumTrackTintColor = [UIColor greenColor]; 7.**设置轨迹图片** [slider setMinimumTrackImage:[UIImage imageNamed:@"Star-Gold"] forState:UIControlStateNormal]; [slider setMaximumTrackImage:[UIImage imageNamed:@"Star-White-Half"] forState:UIControlStateNormal]; 8. **设置大头针** [slider setThumbImage:[UIImage imageNamed:@"Star-Gold"] forState:UIControlStateNormal]; 9. **设置最大/最小值得图片** [slider setMinimumValueImage:[UIImage imageNamed:@"Star-Gold"]]; [slider setMaximumValueImage:[UIImage imageNamed:@"Star-White-Half"]]; 10. **模拟音乐播放器的进度条** [NSTimer scheduledTimerWithTimeInterval:1.f target:self selector:@selector(timeAction:) userInfo:slider repeats:YES]; }- (void)sliderAction:(UISlider *)sender { NSLog(@"%.2f",sender.value); _index = sender.value;}- (void)timeAction:(NSTimer *)sender { _index ++; //利用tag值拿到 //sender.userInfo 拿到 slider UISlider *slider = sender.userInfo; //给slider设置值 [slider setValue:_index animated:YES]; }
1.棋盘[奇偶数] 获取屏幕尺寸 [UIScreen mainScreen].bounds.size.width height
2.七彩旋转
>缩放视图
>随机颜色 rand()%11 -> 0~10
>定时器
3.UILabel
>backgroundColor
>frame 与 bounds 的区别 f->是以父视图的左上角为原点 b->以自己左上角为原点
>text
>tag
>font bold~粗体
>linebreakMode 省略那一部分
>textColor
>textAlignent
>numberOfLines 默认是1 设置为0就是自动换行
>sizeTfit 根据内容调整 字体大小
>shadow 阴影 shadowColor shadowoffset
>高亮的效果
4.UIImamgeView
>加载图片的
>imageView.image = [UIImage imageNamed:~];
>如果要让imageView响应用户交互 默认是不打开的 需要我们去开启 user~
>图片的填充方式 fit \ fill
>clipsToBounds
5.UIControl
>一般不用它,用它子类控件 因为子类更加明显的指出适用于哪些交互。
>自定义可交互控件的话,必须要继承或者间接继承UIControl
>addTarget:(谁来做) Action:动作 Event:事件类型 (点击、值的改变、编辑)
6.UIButton继承于UIControl
>setTitle: forState:
>setImage: ~ 这个图片 是原图尺寸
>setbackgroundImage: 图片会被拉伸
>normal highly select
7.UITextFiled
>文本框
>placeholder 提示输出
>borderstyle 框的样式
>keyboardType 键盘
>clearButtonmode 清除键
>securetextentry
>设置retur键的样式
>delegate 开始编辑 已经编辑 在编辑 开始结束编辑 已经结束编辑 按下return键进行操作
8>UISlider
>滑块
>max min 设置图片trucking~会拉伸 另一个2个端点
>大头针的样式
>中间的线的高度是固定的
>响应方式:连续响应 停止之后再响应
2.七彩旋转
>缩放视图
>随机颜色 rand()%11 -> 0~10
>定时器
3.UILabel
>backgroundColor
>frame 与 bounds 的区别 f->是以父视图的左上角为原点 b->以自己左上角为原点
>text
>tag
>font bold~粗体
>linebreakMode 省略那一部分
>textColor
>textAlignent
>numberOfLines 默认是1 设置为0就是自动换行
>sizeTfit 根据内容调整 字体大小
>shadow 阴影 shadowColor shadowoffset
>高亮的效果
4.UIImamgeView
>加载图片的
>imageView.image = [UIImage imageNamed:~];
>如果要让imageView响应用户交互 默认是不打开的 需要我们去开启 user~
>图片的填充方式 fit \ fill
>clipsToBounds
5.UIControl
>一般不用它,用它子类控件 因为子类更加明显的指出适用于哪些交互。
>自定义可交互控件的话,必须要继承或者间接继承UIControl
>addTarget:(谁来做) Action:动作 Event:事件类型 (点击、值的改变、编辑)
6.UIButton继承于UIControl
>setTitle: forState:
>setImage: ~ 这个图片 是原图尺寸
>setbackgroundImage: 图片会被拉伸
>normal highly select
7.UITextFiled
>文本框
>placeholder 提示输出
>borderstyle 框的样式
>keyboardType 键盘
>clearButtonmode 清除键
>securetextentry
>设置retur键的样式
>delegate 开始编辑 已经编辑 在编辑 开始结束编辑 已经结束编辑 按下return键进行操作
8>UISlider
>滑块
>max min 设置图片trucking~会拉伸 另一个2个端点
>大头针的样式
>中间的线的高度是固定的
>响应方式:连续响应 停止之后再响应
>事件:valueChange
1.窗口和视图的关系。UIWindow继承于UIView,窗口可是容纳视图内容。
2.窗口的作用:
1>容器
2>处理事件,分发事件
3>和视图控制器一起协作管理app
3.视图的作用:
1>一块矩形的区域(画布),用来填充内容(画图)。具体的内容可以使用精确的子类来表示。
2>既可以绘制内容,也可以实现属性动画。
3>布局和管理子视图
4>处理事件(UIView是继承与UIResponder)
4.视图的显示:
平面几何来决定的。frame、bounds、center
1>frame 坐标 尺寸
2>bounds 坐标(0,0) 、size
3>center 坐标
5.通过 Interface Builder创建视图。以前是 Nib 二进制的数据类型 , 现在 xib (XML数据类型文件) 编译打包之后 其实还是Nib文件。
6.重构
/*
* 程序是不断优化升级的
* 优秀的代码是不断地优化
* 编码 更重要的是要让人看得懂 可读性 要强。
* 重复的代码 抽出来 构造成一个方法 来调用
* 相似的功能 某些配置不一样 可以抽出来一个方法 留一个参数来灵活调用
*/
7.视图树 层次结构:每一个视图只有一个父视图 可以有若干个子视图
利用tag 来遍历视图树 查找标记过的视图
8.仿射变换 在旋转后,frame和bounds的不一定一样。
9.UIView的属性动画。 UIView类方法 支持一些属性的改变动画。
10.颜色的RGBA 。 表示的方法:255色阶 255表示颜色最深 #16进制编码的方式 FF表示颜色最深 #xx xx xx #00FF00 ->green
2.窗口的作用:
1>容器
2>处理事件,分发事件
3>和视图控制器一起协作管理app
3.视图的作用:
1>一块矩形的区域(画布),用来填充内容(画图)。具体的内容可以使用精确的子类来表示。
2>既可以绘制内容,也可以实现属性动画。
3>布局和管理子视图
4>处理事件(UIView是继承与UIResponder)
4.视图的显示:
平面几何来决定的。frame、bounds、center
1>frame 坐标 尺寸
2>bounds 坐标(0,0) 、size
3>center 坐标
5.通过 Interface Builder创建视图。以前是 Nib 二进制的数据类型 , 现在 xib (XML数据类型文件) 编译打包之后 其实还是Nib文件。
6.重构
/*
* 程序是不断优化升级的
* 优秀的代码是不断地优化
* 编码 更重要的是要让人看得懂 可读性 要强。
* 重复的代码 抽出来 构造成一个方法 来调用
* 相似的功能 某些配置不一样 可以抽出来一个方法 留一个参数来灵活调用
*/
7.视图树 层次结构:每一个视图只有一个父视图 可以有若干个子视图
利用tag 来遍历视图树 查找标记过的视图
8.仿射变换 在旋转后,frame和bounds的不一定一样。
9.UIView的属性动画。 UIView类方法 支持一些属性的改变动画。
10.颜色的RGBA 。 表示的方法:255色阶 255表示颜色最深 #16进制编码的方式 FF表示颜色最深 #xx xx xx #00FF00 ->green
UIKit框架里面 UIColor colorWithRed: green: blue: alpha 取值范围0~1