前言
最近搞短视频直播的项目,在做横竖屏切换的时候突然想起把之前用到的图片预览库也搞一搞,之前用的一直是竖屏的tableView横向旋转来满足需求,横屏的话旋转起来比较费劲,所以干脆重写了个UICollectionView的图片预览,支持横向图片的滑动和缩放
具体问题如下:
在使用Flowlayout的时候遇到了因为itemSize的宽多出设置的edge问题而报错:
2019-07-25 11:38:22.842273 PicturePreview[868:215914] The behavior of the UICollectionViewFlowLayout is not defined because:
2019-07-25 11:38:22.842453 PicturePreview[868:215914] the item height must be less than the height of the UICollectionView minus the section insets top and bottom values, minus the content insets top and bottom values.
2019-07-25 11:38:22.844219 PicturePreview[868:215914] The relevant UICollectionViewFlowLayout instance is <UICollectionViewFlowLayout: 0x147d08390>, and it is attached to <UICollectionView: 0x148024400; frame = (0 0; 667 375); clipsToBounds = YES; gestureRecognizers = <NSArray: 0x174047890>; animations = { position=<CABasicAnimation: 0x170032c00>; bounds.origin=<CABasicAnimation: 0x170032cc0>; bounds.size=<CABasicAnimation: 0x170032ce0>; }; layer = <CALayer: 0x17402f220>; contentOffset: {0, 0}; contentSize: {1955, 667}> collection view layout: <UICollectionViewFlowLayout: 0x147d08390>.
2019-07-25 11:38:22.844351 PicturePreview[868:215914] Make a symbolic breakpoint at UICollectionViewFlowLayoutBreakForInvalidSizes to catch this in the debugger.
首先我想到的是,是不是因为重设itemSize的设置出了问题,于是将itemSize的设置放在了collectionView布局修改之前进行,成功解决了这个问题,但是中间遇到的:
Make a symbolic breakpoint at UICollectionViewFlowLayoutBreakForInvalidSizes to catch this in the debugger.
作为一个做了好多年开发,自认为很厉(菜)害(鸡)的我来说,还是要记录下的。
解决如下
根据提示,我们需要打一个symbolic breakpoint,所以来到工程的全局断点这里
选择symbolic breakpoint添加,右键edit
这个时候运行就会为我们定位到相关的布局
到了这里可能有的朋友看不懂这个是做什么的,别着急,我们可以看到每个控件的地址,这个时候我们就可以将他们打印出来:
通过比较,我们就可以看出每个空间的frame,如果是size过大超越边距,就可以通过追溯布局修改到满足条件的尺寸了。