我有一个未填满整个屏幕的 UIView,我想向该 View 添加顶部边框。但是,我不断收到以下信息:
这是我使用的代码:
CGFloat thickness = 4.0f;
CALayer *topBorder = [CALayer layer];
topBorder.frame = CGRectMake(0, 0, self.announcementCard.frame.size.width, thickness);
topBorder.backgroundColor = [UIColor blueColor].CGColor;
我怎么知道为什么边框会超出屏幕。这是因为我将边框放在 UIViews init 方法内的 View 上。当我这样做时,self.announcementCard.frame.size.width
是 1000,因此边框会离开屏幕。 self.announcementCard.frame.size.width
的宽度和高度均为 1000。这是因为 UIView 尚未在其 init 方法中向 UIView 添加约束。
因此,我的问题是我应该什么时候调用上面编写的代码? self.announcementCard.frame.size.width
何时添加其约束并更新其框架?
最佳答案
您应该在 viewDidLoad
方法中添加 subview (或子图层)。但是,如果您使用自动布局,请保留子图层的引用并在 viewDidLayoutSubviews
方法中更新它:
- (void)viewDidLoad {
[super viewDidLoad];
_borderLayer = [CALayer layer];
[self.view.layer addSublayer:_borderLayer];
}
- (void)viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
_borderLayer.frame = CGRectMake(0, 0, self.view.bounds.size.width, 3);
}
否则,您可以简单地 clipsToBounds
View 来避免 subview 超出边界可见。
self.view.clipsToBounds = YES;
关于ios - 我什么时候应该在 UIViews 中设置边框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39774193/