代码块高级
2015-12-07 17:36
381 查看
本文要讲的是代码块作为参数,去控制视图的颜色
首先:创建一个视图控制器和导航视图控制器,把视图控制器加入跟视图
MangoViewController *mang=[[MangoViewController
alloc]init];
UINavigationController *nav=[[UINavigationController
alloc]initWithRootViewController:mang];
self.window.rootViewController=nav;
[mang release];
[nav release];
视图控制器里创建一个button,去触发背景颜色的改变
UIButton *btn=[UIButton
buttonWithType:UIButtonTypeCustom];
btn.frame=CGRectMake(30, 300,
self.view.frame.size.width-60, 44);
[btn setTitle:@"点击"
forState:UIControlStateNormal];
[btn addTarget:self
action:@selector(changeColor)
forControlEvents:UIControlEventTouchUpInside];
btn.backgroundColor=[UIColor
blueColor];
[self.view
addSubview:btn];
之后创建一个model类,继承NSOject类,
在。h文件中写入声明方法
#import <Foundation/Foundation.h>
//导入系统类用尖括号<>
#import <UIKit/UIColor.h>
typedef void(^responseColor)(UIColor *willSetColor);
@interface ColorModel :
NSObject
////把参数类型定义成block类型colorBlock是一个有参数无返回值的block。。。void(^)(UIColor
*willSetColor)
//-(void)getViewColorWithColorBlock:(void(^)(UIColor *willSetColor))colorBlock;
//
-(void)getViewColorWithColorBlock:(responseColor)colorBlock;
在。m中写入实现方法:
- (void)getViewColorWithColorBlock:(responseColor)colorBlock{
//随机颜色
UIColor *willSetColor=[UIColor
colorWithRed:arc4random()%256/255.0f
green:arc4random()%256/255.0f
blue:arc4random()%256/255.0f
alpha:1.0];
colorBlock(willSetColor);
}
之后,回到控制器里面写入点击按钮的实现方法:
-(void)changeColor{
ColorModel *model=[[ColorModel
alloc]init];
//在block的内部,不能直接使用实例变量,self调用属性,因为block会造成self引用计数加一,导致引用计数问题
__block UIViewController *weakSelf=self;
[model getViewColorWithColorBlock:^(UIColor *willSetColor) {
//给view重新设置颜色
weakSelf.view.backgroundColor=willSetColor;
}];
}
首先:创建一个视图控制器和导航视图控制器,把视图控制器加入跟视图
MangoViewController *mang=[[MangoViewController
alloc]init];
UINavigationController *nav=[[UINavigationController
alloc]initWithRootViewController:mang];
self.window.rootViewController=nav;
[mang release];
[nav release];
视图控制器里创建一个button,去触发背景颜色的改变
UIButton *btn=[UIButton
buttonWithType:UIButtonTypeCustom];
btn.frame=CGRectMake(30, 300,
self.view.frame.size.width-60, 44);
[btn setTitle:@"点击"
forState:UIControlStateNormal];
[btn addTarget:self
action:@selector(changeColor)
forControlEvents:UIControlEventTouchUpInside];
btn.backgroundColor=[UIColor
blueColor];
[self.view
addSubview:btn];
之后创建一个model类,继承NSOject类,
在。h文件中写入声明方法
#import <Foundation/Foundation.h>
//导入系统类用尖括号<>
#import <UIKit/UIColor.h>
typedef void(^responseColor)(UIColor *willSetColor);
@interface ColorModel :
NSObject
////把参数类型定义成block类型colorBlock是一个有参数无返回值的block。。。void(^)(UIColor
*willSetColor)
//-(void)getViewColorWithColorBlock:(void(^)(UIColor *willSetColor))colorBlock;
//
-(void)getViewColorWithColorBlock:(responseColor)colorBlock;
在。m中写入实现方法:
- (void)getViewColorWithColorBlock:(responseColor)colorBlock{
//随机颜色
UIColor *willSetColor=[UIColor
colorWithRed:arc4random()%256/255.0f
green:arc4random()%256/255.0f
blue:arc4random()%256/255.0f
alpha:1.0];
colorBlock(willSetColor);
}
之后,回到控制器里面写入点击按钮的实现方法:
-(void)changeColor{
ColorModel *model=[[ColorModel
alloc]init];
//在block的内部,不能直接使用实例变量,self调用属性,因为block会造成self引用计数加一,导致引用计数问题
__block UIViewController *weakSelf=self;
[model getViewColorWithColorBlock:^(UIColor *willSetColor) {
//给view重新设置颜色
weakSelf.view.backgroundColor=willSetColor;
}];
}
相关文章推荐
- Java中获取文件大小的正确方法
- 【Java基础】深入Java内存区域
- 老李分享:JDK,JRE,JVM区别与联系
- 腾讯云搭建php环境
- STL学习之迭代器和trait编程技巧
- C/C++语言中函数参数传递的三种方式
- 用Visual Basic设计手机短信收发程序
- jdk配置环境变量
- java之运算符
- Qt学习(3)
- java之hashCode
- Python机器学习库scikit-learn实践
- Java线程编程中Thread类的基础学习教程
- Java获取文件类型Mime Type的各种方法
- 用Visual Basic设计手机短信收发程序
- 关于Random(47)和nextint(3)的问题
- 改变JVM中的参数以提高Eclipse的运行速度
- Spring AOP介绍及源码分析
- [Golang] groupcache的简单例子
- WMI 编程之接收事件通知