2017-09-02 45 views
-1

我是一位新手,以編程方式計算出自動佈局。Autolayout不會垂直添加間隙

我定義了一個imageview,添加到superview(UIViewController)。使用視覺格式添加約束來設置差距。我沒有提供價值只是破折號( - )。根據資源iam提到學習,沒有提供價值,我會得到8pts的差距。

我水平但不垂直地得到空白。

- (void)viewDidLoad { 
    [super viewDidLoad]; 
UIImageView * thumbnailImageView = [[UIImageView alloc] init]; 
thumbnailImageView.backgroundColor = [UIColor greenColor]; 
thumbnailImageView.image = [UIImage imageNamed:@"thumbnailImage"]; 
thumbnailImageView.contentMode = UIViewContentModeScaleAspectFill; 
thumbnailImageView.layer.masksToBounds = true; 
thumbnailImageView.translatesAutoresizingMaskIntoConstraints = false; 

[self.view addSubview:thumbnailImageView]; 

[self.view addConstraints:[NSLayoutConstraint 
         constraintsWithVisualFormat:@"V:|-[thumbnailImageView]-|" options:0 
         metrics:nil 
         views:NSDictionaryOfVariableBindings(thumbnailImageView)]]; 
[self.view addConstraints:[NSLayoutConstraint 
          constraintsWithVisualFormat:@"H:|-[thumbnailImageView]-|" options:0 
          metrics:nil 
          views:NSDictionaryOfVariableBindings(thumbnailImageView)]]; 

enter image description here

回答

1

如果你想一直使用的空間,你需要設置:self.view.preservesSuperviewLayoutMargins = YES;

或者,您也可以更改頁邊距,以及:

self.view.layoutMargins = UIEdgeInsetsMake(8, 8, 8, 8); 
self.view.preservesSuperviewLayoutMargins = YES; 

否則視圖會相應地增長或縮小以適應。當你添加上面的代碼行時,你會注意到它默認爲你添加了8個像素到所有的約束。但是,水平約束可能現在看起來更大或看起來像是16 ..這是因爲邊距可能是8,16或20.

明確指定大小總是更好。

+0

謝謝幫助 – ios