1.当table有需要隐藏cell的需求时,不要设cellHeight=0,而是要控制cell的个数,防止cellHeight=0时,控件也会往上加
2.masonry在做动画之前,要先在动画前给控件设置约束,并调用父视图的layoutifNeeded,在iOS7上,若是调用子视图的layoutifNeeded,动画不会执行
3.查看当前对象的引用计数的两种方法:
NSLog(@"--%@---%ld",[self valueForKey:@"retainCount"],CFGetRetainCount((__bridge CFTreeRef)self));
4.在相对布局中,scrollView及其子类上的控件,不能以scrollView及其子类为参数布局,可以直接使用一个定值,例如make.left.mas_equal(50)。如果出现不能滑动等问题,搜索“scrollView和自动布局”寻找答案。手动设置contentSizes需要在下面这个函数中设置
- (void)viewDidLayoutSubviews {
//设置scw的contentSize
[self.scwBG setContentSize:CGSizeMake(0, topVwTags + heightVwTags + 150)];
}
5.任何类型的成员变量在block中使用都可能会引起内存泄露(在开发中遇到过,测试中没测出来),尽量不要用成员变量,而使用属性。
6.iOS8以前和以后,横屏和竖屏的区别在于,下列两个方法获取的长度不同,例如在iOS8以前,横屏和竖屏时,viewH获得的值永远都是横屏时的高,而iOS8以后,横屏时,viewH获得的值是横屏时的高;竖屏时,viewH获得的值是横屏时的宽。
#define viewH CGRectGetHeight([UIScreen mainScreen].bounds)
#define viewW CGRectGetWidth([UIScreen mainScreen].bounds)
7.UICollectionViewFlowLayout的最小行间距minimumLineSpacing和最小列间距minimumInteritemSpacing有默认值为10.0(UICollectionViewFlowLayout.h文件中没有做说明),所以在布局无间距的CollectionView时,记得把这两个属性设为0。
UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
NSLog(@"%f--%f",layout.minimumLineSpacing,layout.minimumInteritemSpacing);
layout.minimumLineSpacing = 0;
layout.minimumInteritemSpacing = 0;
//输出:10.000000--10.000000
8.延迟执行performSelector和取消延迟执行cancelPreviousPerformRequestsWithTarget,需要注意的是参数的一致性,否则取消无法实现
[self performSelector:@selector(action:) withObject:[NSNumber numberWithBool:YES] afterDelay:3.0f];
//1、object参数一致,可以移除
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(action:) object:[NSNumber numberWithBool:YES]];
//2、object参数不一致,无法移除
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(action:) object:[NSNumber numberWithBool:NO]];
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(action:) object:nil];