2017-09-02 16 views
-1

私はautolayoutをプログラムによって解明している初心者です。Autolayoutは垂直方向にギャップを追加しません

私はスーパービュー(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

関連する問題