如果添加的View“看不见”的处理

考虑用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;
}

你可能感兴趣的:(如果添加的View“看不见”的处理)