[segue.destinationViewController setHidesBottomBarWhenPushed:YES];
push的时候,toolbar隐藏
[array enumerateObjectsUsingBlock:^(__kindof UIView *_Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
}];
对数组进行遍历的时候,用block进行枚举,内存消耗明显优于优于普通的for循环(对于需要判断是否是最后一个或者循环到的idx)
对于tabbar上面的图标,如果想改变他们的线条颜色,可以设置tabbar.tintColor
,这样就会统一各个bar item的颜色。另外要注意UIImage的renderingColorMode的三个枚举值。
用UIVisualEffectView
模糊的view,用于处理覆盖动画的背景。
keyWindow = [[UIApplication sharedApplication] keyWindow];
获取到keyWindow之后,能够很方便的操纵想要显示的区域和不想显示的区域。
helperSideView.hidden = YES;
用于辅助的视图,给它们设为hidden
两个辅助视图的x值拼接出一个先增后减至负值在增至零。
这样就能得到另一个control point (详见kitten yang 的 gooeySlideMenu)
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextAddPath(context, bezierPath.CGPath);
画好了曲线后,添加到context中。
CADisplayLink
十分适合做UI重绘,因为在每一帧刷新时执行selector
一个视图的显示与否,也可以用alpha值控制。
留个坑,slideMenuButton的.m还没总结,考完试再填吧。。。
tableView性能优化干货!
但重要的事情是:在UITableView的dataSource
中实现的tableView:cellForRowAtIndexPath:
方法,需要为每个cell调用一次,它应该快速执行。所以你需要尽可能快地返回重用cell实例。不要在这里去执行数据绑定,因为目前在屏幕上还没有cell。为了执行数据绑定,可以在UITableView的delegate方法tableView:willDisplayCell:forRowAtIndexPath:
中进行。这个方法在显示cell之前会被调用。
NSDictionary addEntriesFromDictionary: 作字典的合并,事实上是替换掉相同的键值对,增加之前没有的键值对。示例代码如下:
NSString *LAST=@"lastName";
NSString *FIRST=@"firstName";
NSString *SUFFIX=@"suffix";
NSString *TITLE=@"title";
NSMutableDictionary *dict=[NSMutableDictionary dictionaryWithObjectsAndKeys:
@"Jo", FIRST, @"Smith", LAST, nil];
NSDictionary *newDict=[NSDictionary dictionaryWithObjectsAndKeys:
@"Jones", LAST, @"Hon.", TITLE, @"J.D.", SUFFIX, nil];
//合并两个字典
[dict addEntriesFromDictionary: newDict];
结果是:dict 为 FIRST:@"Jo"
LAST:@"Jones"
TITLE:@"Hon."
SUFFIX:@"J.D."