1、全局变量
static NSInteger kImageHeight = 300;
#define kImageHeight 300
2、通知中心
开始编辑
UITextViewTextDidBeginEditingNotification
正在更改
UITextViewTextDidChangeNotification
结束编译
UITextViewTextDidEndEditingNotification
//注册文字改变通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textDidChangeNotifition:) name:UITextViewTextDidChangeNotification object:nil];
- (void)dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver:self name:UITextViewTextDidChangeNotification object:nil];
}
3、动态加载(不用导入头文件)
NSArray * vcNames1 = @[@"FriendViewController"];
NSArray * vcNames2 = @[@"SwipeViewController",@"SharkViewController"];
self.viewControllers = @[vcNames1,vcNames2];
NSString * vcName = self.viewControllers[indexPath.section][indexPath.row];
UIViewController * vc = [[NSClassFromString(vcName) alloc] init];
例如:自定义Button类:UIButton
在viewController 声称对应button对象 进行重写init方法来定义 类型
不能在button类中写button属性 因为在懒加载中 添加点击事件 调不到
4、更改图片颜色; 忽略它的颜色信息
image = [image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
5、项目结构
6、 当导航视图控制器压栈时,隐藏tabbar
vc.hidesBottomBarWhenPushed = YES;
7、图片加边框,代码:
imageLayer.borderColor = [UIColor grayColor].CGColor; //边框颜色
imageLayer.borderWidth = 2.0; //边框宽度
8、磊神教学Block
(1)声明block变量并设置返回值类型
typedef NSString *(^MYBlock)(NSString *);
@property (nonatomic, copy) MYBlock block;
(2)调用Block方法(发送),并接收返回值
NSString * string = self.block(@"123”);
NSLog(@“%@“,string);
(3)调用Block方法(接收),并接收返回值
self.ceshi.block = ^ (NSString *string) {
NSLog(@"%@",string);
return@“peng";
};
(4)利用typedef定义block类型(和指向函数的指针很像)
(类)Typedef int(^MyBlock)(int ,int);
以后就可以利用这种类型来定义block变量了。
(类)MyBlock block1,block2;
(类)int i = block1(3,4);
(主)block1=^(int a,int b){
return a-b;
};
__weak ViewController *mySelf = self; block中避免循环引用