我想更改'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-|"
分别用于水平和垂直约束。