代码块高级
来源:互联网 发布:网络监控结构图 编辑:程序博客网 时间:2024/05/21 17:36
本文要讲的是代码块作为参数,去控制视图的颜色
首先:创建一个视图控制器和导航视图控制器,把视图控制器加入跟视图
MangoViewController *mang=[[MangoViewControlleralloc]init];
UINavigationController *nav=[[UINavigationControlleralloc]initWithRootViewController:mang];
self.window.rootViewController=nav;
[mang release];
[nav release];
UIButton *btn=[UIButtonbuttonWithType:UIButtonTypeCustom];
btn.frame=CGRectMake(30, 300,self.view.frame.size.width-60, 44);
[btn setTitle:@"点击"forState:UIControlStateNormal];
[btn addTarget:selfaction:@selector(changeColor)forControlEvents:UIControlEventTouchUpInside];
btn.backgroundColor=[UIColorblueColor];
[self.viewaddSubview: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=[UIColorcolorWithRed:arc4random()%256/255.0fgreen:arc4random()%256/255.0fblue:arc4random()%256/255.0falpha:1.0];
colorBlock(willSetColor);
}
之后,回到控制器里面写入点击按钮的实现方法:-(void)changeColor{
ColorModel *model=[[ColorModelalloc]init];
//在block的内部,不能直接使用实例变量,self调用属性,因为block会造成self引用计数加一,导致引用计数问题
__block UIViewController *weakSelf=self;
[model getViewColorWithColorBlock:^(UIColor *willSetColor) {
//给view重新设置颜色
weakSelf.view.backgroundColor=willSetColor;
}];
}
- 代码块高级
- Java高级篇-10-静态代码块和静态方法
- 代码块
- 代码块
- 代码块
- 代码块
- 代码块
- 代码块
- 代码块
- 代码块
- 代码块
- 代码块
- 代码块
- 代码块
- 代码块
- 代码块
- 代码块
- 代码块
- lightoj 1043 - Triangle Partitioning 【水题】
- Android使用adb获得activity堆栈信息
- android LayoutInflater.inflate()的参数及其用法
- js增加行
- Lambda 表达式
- 代码块高级
- 加载properties文件
- 那些程序员出身的畅销书作家
- phpstorm配置代码自动同步到服务器
- Unity3D下 仙剑奇侠传三 人物移动及视角控制的尝试实现及补充
- 布局文件的优化
- UIScrollView循环滚动(三张图片循环滚动)
- 新下拉刷新控件:SwipeRefreshLayout
- 当前时间推后两个工作日的时间