2017-06-01 20 views
0

我想將'self.view'和'subView'之間的邊距改爲UIEdgeInsetsZero,但它保持(0,16,0,16)。 我怎麼能解決這個問題,爲什麼它是(0,16,0,16)而不是(8,8,8,8)?如何更改「self.view.layoutMargins」。它保持(0,16,0,16)

redView's margins stay (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]; 
} 
+0

當你運行你的代碼時,你會得到任何約束錯誤輸出嗎?故事板中是否有任何約束設置? –

回答

0

根據Apple Documentation

如果視圖是視圖控制器的根視圖,該系統集和管理該邊距。頂部和底部邊距設置爲零點。側邊距取決於當前的尺寸等級,但可以是16點或20點。您無法更改這些邊距。

因此,如果你想self.view和子視圖之間填充成爲(8, 8, 8, 8),需要分別具有視覺格式,@"H:|-8-[subView]-8-|"@"V:|-8-[subView]-8-|"水平和垂直限制。

相關問題