考虑用xib创建一个view,然后collection添加view,代码如下
+(instancetype)cycleView
{
return [[[NSBundle mainBundle]loadNibNamed:NSStringFromClass(self) owner:nil options:nil]lastObject];
}
然后collectionView添加,但是运行的时候发现根本看不见(但是打断点有尺寸,用视图调试却还是看不见,即使修改了尺寸),原因就是(这个东西确实需要经验):
先看几个重要代码
_collectionView = [[UICollectionView alloc]initWithFrame:self.view.bounds collectionViewLayout:layout];
//由于collectionView尺寸问题,self.view.bounds,宽高还是模拟器所在的高度,所以适配下高度问题 -- 固定下宽高
self.collectionView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
如此原因出现了:
父控件,也就是collectionView的尺寸是self.view.bounds,也就是手机屏幕(0,0)坐标的位置,然后为了需求考虑,对collectionView进行拉伸考虑,使其宽度,高度随父控件变化而变化,由于xib建立的view是默认随父控件拉伸的,可能经过这一系列处理,导致该子控件就此“消失了,所以用这一句话,不让该控件随着父控件拉伸而拉伸,然后控件就出现了
解决的方法的话
- 可以在xib先取消layout勾选,然后autoresizing那里把顶部固定和左边固定给留住 (麻烦操作)
- 直接在awakefromnib里写一句话(简单操作)
-(void)awakeFromNib
{
[super awakeFromNib];
self.autoresizingMask = UIViewAutoresizingNone;
}