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里面设置一下。