gpt4 book ai didi

ios - Objective-C : Auto Layout with existing Custom View changing bounds width and height to 0, 0

转载 作者:可可西里 更新时间:2023-11-01 17:08:47 24 4
gpt4 key购买 nike

好的。我只是在学习 CALayers,因为我继承了别人的代码。有一个 View 占据整个背景(减去工具栏),然后是一个 subview ,它占据 View 底部附近的一个小矩形。我正在尝试使用自动布局。这是我遇到麻烦的背景 View 。我已经尝试固定宽度和高度以及其他一些我知道的东西来获得高度和宽度以保持 View 的大小(320 x 505)。我不确定这些图层是否把我搞砸了,或者它是否是另一个 View 。无论如何,这是有问题的代码。关闭自动布局后,宽度和高度是正确的。启用自动布局后,宽度和高度变为负数并设置为零。关于如何解决此问题的任何想法?

    UIView *view = [self videoPreviewView];        
CGRect bounds = [[self videoPreviewView] bounds]; //bounds gets set here
//values are same as below

[self setCaptureManager:captureManager];

AVCaptureVideoPreviewLayer *captureVideoPreviewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:[captureManager session]];

CALayer *viewLayer = [view layer];
[viewLayer setMasksToBounds:YES];

[captureVideoPreviewLayer setFrame:bounds]; //Use Autolayout off: x=0, y=0, width=320, height=504
//Use Autolayout on: x=0, y=0, width=0, height=0

谢谢。

最佳答案

启用自动布局后, subview 约束尚未在 viewDidLoad 中计算,导致 frame 等于 CGRectZero。您应该将框架设置代码移至 viewDidLayoutSubviews 方法中。

来自解释 viewDidLayoutSubviews 的类引用:

Notifies the view controller that its view just laid out its subviews.

恰好在自动布局完成计算约束并将 subview 放置到位之后。

关于ios - Objective-C : Auto Layout with existing Custom View changing bounds width and height to 0, 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16945604/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com