XIb构建的View没有显示

Xib构建的View设置背景色无效,显示位置不正常

问题描述:xib创建的view,在Ctroller加载的时候,显示的位置错乱,以及设置背景色不生效。

  • 期初怀疑是执行loadNibNamed:方法在viewDidLoad的时候没有加载出来Fream,然后在viewWillAppear方法打印view,发现fream是存在的。
<YZXYMinePromotionView: 0x1058a4860; frame = (0 0; 414 40); autoresize = W+H; layer = <CALayer: 0x28379b580>>

fream存在的,也没有错误。

  • 发现日志里面有一个autoresize = W+H
typedef NS_OPTIONS(NSUInteger, UIViewAutoresizing) {
    UIViewAutoresizingNone                 = 0,
    UIViewAutoresizingFlexibleLeftMargin   = 1 << 0,
    UIViewAutoresizingFlexibleWidth        = 1 << 1,
    UIViewAutoresizingFlexibleRightMargin  = 1 << 2,
    UIViewAutoresizingFlexibleTopMargin    = 1 << 3,
    UIViewAutoresizingFlexibleHeight       = 1 << 4,
    UIViewAutoresizingFlexibleBottomMargin = 1 << 5
};

W对应UIViewAutoresizingFlexibleWidth
H对应UIViewAutoresizingFlexibleHeight

就是view会随着父视图的大小改变而改变


  • 解决方案一:
view.autoresizingMask = UIViewAutoresizingNone;

这个属性就是view不会随着父视图改变

  • 解决方案二
-(void)layoutSubviews{
    [super layoutSubviews];
    CGRect fream = self.frame;
    fream.size.height = 50;
    [self setFrame:fream];
}

在view里面设置一下。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容