UICollectionView sizeForItemAt 崩溃求助:设置CGPoint后仍崩溃
崩溃原因排查与解决
从报错截图能看出,崩溃是因为你给未正确初始化的视图对象设置位置属性导致的,哪怕用测试坐标也会触发,跟具体坐标值无关。
几个必查点
- 先确认你要调整位置的视图有没有被正确创建:如果是代码写的,得先调用
initWithFrame:或init实例化;如果是IB拖的线,检查IBOutlet有没有关联好,别是nil状态。 - 别搞混对象类型:确保你操作的确实是UIView(或子类)实例,别把数组、字典这类对象当成视图来改位置。
- 必须在主线程改UI:后台线程直接操作UI控件大概率会崩,所有UI相关操作都要放到主线程里执行。
调试小技巧
- 在设置
center = CGPoint(10,10)那行加断点,运行后看看目标视图的内存地址是不是nil。 - 看崩溃栈的详细信息,精准定位哪行代码出问题,以及接收消息的对象到底是什么。
- 代码创建视图的话,顺序别搞反:
// OC 正确流程示例 UIView *testView = [[UIView alloc] initWithFrame:CGRectMake(0,0,100,100)]; testView.center = CGPointMake(10,10); [self.view addSubview:testView];
// Swift 正确流程示例 let testView = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 100)) testView.center = CGPoint(x: 10, y: 10) view.addSubview(testView)
不能还没创建视图就先去改它的center。
内容的提问来源于stack exchange,提问作者AdamP
相关产品推荐
相关产品推荐

