加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ios – 目标C:自动布局,现有自定义视图将边界宽度和高度更改为0

发布时间:2020-12-14 17:12:15 所属栏目:百科 来源:网络整理
导读:好.我刚学习CALayers,因为我继承了别人的代码.有一个视图占据整个背景(减去工具栏),然后是一个子视图,占据了视图底部附近的一个小矩形.我正在尝试使用自动布局.这是我遇到麻烦的背景视图.我已经尝试固定宽度和高度以及我知道的其他一些东西,以使高度和宽度保
好.我刚学习CALayers,因为我继承了别人的代码.有一个视图占据整个背景(减去工具栏),然后是一个子视图,占据了视图底部附近的一个小矩形.我正在尝试使用自动布局.这是我遇到麻烦的背景视图.我已经尝试固定宽度和高度以及我知道的其他一些东西,以使高度和宽度保持视图的大小(320 x 505).我不确定这些图层是否弄乱了我,或者它是否是另一种观点.无论如何这里是有问题的代码.关闭自动布局后,宽度和高度都是正确的.打开“自动布局”后,宽度和高度将变为负数并设置为零.有想法该怎么解决这个吗?

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,width=0,height=0

谢谢.

解决方法

启用autolayout后,尚未在viewDidLoad中计运算符视图约束,从而导致帧等于CGRectZero.您应该将帧设置代码移动到viewDidLayoutSubviews方法中.

从类引用解释viewDidLayoutSubviews:

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

正是在autolayout完成其工作以计算约束并将子视图放在适当位置之后.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读