1.size和center
如果想用size和center的组合去设置控件,这个size最好是从bounds中取,不用考虑调用顺序;如果size从frame中获得,一定要先设置了size,在设置center。
2.通知,[NSNotificationCenter defaultCenter]
- 1.发出通知
- 2.接收通知
- 3.移除通知
- 4.接收通知的方法是由发布通知的线程决定,在发布通知的线程中执行
- 5.一定要保证接收通知代码在主线程调用
- 6.不管在哪个线程发送通知,都在接收通知的方法中跳转到主线程
原因:不能在子线程接收通知,异步任务不会卡线程,不能保证是否先接收到通知
[[NSNotificationCenter defaultCenter] addObserverForName:postName object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification * _Nonnull note) {
// 主线程执行block
NSLog(@"%@",[NSThread currentThread]);
}];
3.frame和bounds
frame:以父控件左上角为原点的矩形
bounds:以自己的左上角为原点的矩形,修改bounds是针对控件里面的内容
frame和bounds都是描述一块矩形
frame:描述可视范围
bounds:描述可视范围在内容中的矩形
bounds本质:修改的是内容原点位置
bounds:相对于父控件位置不变,相对于内容,位置改变
所有的子控件,都是相对于内容
UICollectionView 用代码创建视图 要自定义布局流时, 如果页面有多个collectionView 也要创建多个UICollectionViewFlowLayout 与之对应. 否则会报错
UICollectionView received layout attributes for a cell with an index path that does not exist: <NSIndexPath: 0xc000000000c00016> {length = 2, path = 0 - 6}
MAPKit
代理函数:
-(void)mapView:(BMKMapView *)mapView didSelectAnnotationView:(BMKAnnotationView *)view 没有调用,给annotation实例的title付了一个空格,即:annotation.title = @" ",注意,这里是空格,不是空值。
再次运行程序,能响应事件了,这应该是百度sdk中的一个小bug,因为google地图不设置title也能正常显示。
// 圆角
- (UIImage *)image:(CGFloat)radius size:(CGSize)size img:(UIImage *)img{
CGRect rect = (CGRect){0, 0, size};
UIGraphicsBeginImageContextWithOptions(rect.size, NO, [UIScreen mainScreen].scale);
CGContextAddPath(UIGraphicsGetCurrentContext(), [UIBezierPath bezierPathWithRoundedRect:rect cornerRadius:radius].CGPath);
CGContextClip(UIGraphicsGetCurrentContext());
[img drawInRect:rect];
CGContextDrawPath(UIGraphicsGetCurrentContext(), kCGPathFillStroke);
UIImage *im = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return im;
}
打印
#define DDLog(xx, ...) NSLog(@"%s(%d): " xx, __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__)
Swift是否有运行时机制
http://makaidong.com/judy_luo/1/35704_10981245.html
地图中不能在didUpdateUserLocation 频繁调用这个动画方法 会有闪退的危险 并且很难找出log日志(PS: 也就是说 这个方法时间单位不能重复多次的调用)
[self.recordMap setRegion:region animated:YES];