更改视图层的大小和视图的位置

Posted

技术标签:

【中文标题】更改视图层的大小和视图的位置【英文标题】:Change view layer's size and view's position 【发布时间】:2013-10-04 02:12:06 【问题描述】:

我正在使用 Apple 的 AVCam 示例,我正在尝试修改布局以使用 iPad。

我试图让状态栏始终存在,但是每当我启用它时,(我认为是videoPreviewView 及其viewLayer)都会妨碍状态栏。所以我需要将它向下移动 20px 以便为状态栏腾出空间,但我不确定如何。

    AVCaptureVideoPreviewLayer *newCaptureVideoPreviewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:[[self captureManager] session]];
    UIView *view = [self videoPreviewView];
    CALayer *viewLayer = [view layer];
    [viewLayer setMasksToBounds:YES];

    CGRect bounds = [videoPreviewView bounds];
    [[self view] setBounds:bounds];
    newCaptureVideoPreviewLayer.bounds = bounds;
    [newCaptureVideoPreviewLayer setFrame:bounds];

【问题讨论】:

【参考方案1】:

把这个放在UIView *view = [self videoPreviewView];下面

CGPoint viewCenter = view.center;
viewCenter = CGPointMake(viewCenter.x, viewCenter.y - 20)
view.center = viewCenter;

【讨论】:

出于某种原因,这似乎进一步推动了它。所以现在视图底部和最底部的工具栏之间有 20px 的间隙。我尝试将其更改为 +20,它确实将其向下移动,但当时它与工具栏重叠。【参考方案2】:

将此添加到 AdamG 的答案中起到了作用,不知道为什么或者它是否是一个可行的解决方案。有人想插话吗?

CGPoint viewCenter = view.center;
viewCenter = CGPointMake(viewCenter.x, viewCenter.y + 20);
view.center = viewCenter;
CGRect temp = view.frame;
temp.size.height += -20;
view.frame = temp;

【讨论】:

以上是关于更改视图层的大小和视图的位置的主要内容,如果未能解决你的问题,请参考以下文章

集合视图更改单元格大小

iOS 故事板 - 自动布局不会调整子视图的大小和位置

如何根据单元格数量更改滚动视图大小?

更新一些子视图而不更新所有子视图

动画不适用于 SwiftUI 视图状态更改

在 IB 中,当我调整父视图的大小时,如何让子视图保持与父视图相同的大小?