如何更改"self.view.layoutMargins" .它停留 (0, 16, 0, 16)



我想更改'self..view'和'subview''之间的边距到uiedgeinsetsetsere,但它留下来(0、16、0、16(。我如何解决这个问题,为什么它是(0、16、0、16(,而不是(8、8、8、8(?

redview的边缘停留(0、16、0、16(

- (void)viewDidLoad {
    [super viewDidLoad];
    self.view.layoutMargins = UIEdgeInsetsZero;
    UIView * subView = [[UIScrollView alloc] init];
    subView.backgroundColor = [UIColor redColor];
    [self.view addSubview:subView];
    subView.translatesAutoresizingMaskIntoConstraints = NO;
    NSArray * H = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-[subView]-|" options:NSLayoutFormatAlignAllLeading metrics:nil views:@{@"subView": subView}];
    NSArray * V = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-[subView]-|" options:NSLayoutFormatAlignAllTrailing metrics:nil views:@{@"subView": subView}];
    [self.view addConstraints:H];
    [self.view addConstraints:V];
}

根据苹果文档:

如果视图是视图控制器的根视图,则系统设置并管理边距。顶部和底部边缘设置为零点。侧缘因当前尺寸类别而异,但可以是16或20点。您无法更改这些边距。

因此,如果您希望自view和子视图之间的填充是(8, 8, 8, 8),则需要将视觉格式作为@"H:|-8-[subView]-8-|"@"V:|-8-[subView]-8-|"分别用于水平和垂直约束。

相关内容

最新更新