2017-09-22 7 views
0

私はあなたの下にお見せしている写真でストーリーボード対シミュレータは何の制約は適用しない

...私は仕事のように多くの時間後に多くの混乱をやっているが、私は何が起こっているのか理解していない可能性が高いことができますストーリーボードlammを参照してください。オレンジの矢印は、私のシミュレータがiPhone SEとIPhone 8 plusの間にiPhone SEで作業していることを示しています。

ご覧のとおり、2つのシミュレータには制約があります。 enter image description here

enter image description here

UIImageViewは、私はストーリーボードのiPhone私に働いているにもかかわらず、すべてのデバイス上で完璧に見えるようにUIImageViewを取るならば、これは助けることができる理由..私は理解していない、その上にグラデーション効果を持っています私? viewDidLoad()

gradientMask.frame = _images.bounds; 

私はまた、あなたのUIImageViewコード

- (void)viewDidLoad { 
[super viewDidLoad]; 
CAGradientLayer *gradientMask = [CAGradientLayer layer]; 
gradientMask.frame = _images.bounds; 
gradientMask.colors = @[(id)[UIColor whiteColor].CGColor, 
         (id)[UIColor clearColor].CGColor]; 

_images.layer.mask = gradientMask; 

gradientMask.startPoint = CGPointMake(0.8, 0.0); 
gradientMask.endPoint = CGPointMake(0.8, 0.8); 

gradientMask.colors = @[(id)[UIColor clearColor].CGColor, 
         (id)[UIColor whiteColor].CGColor, 
         (id)[UIColor whiteColor].CGColor, 
         (id)[UIColor clearColor].CGColor]; 
gradientMask.locations = @[@0.0, @0.0, @0.8, @1.0]; 

_images.contentMode = UIViewContentModeScaleAspectFill; 

UIBlurEffect *effect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight]; 
UIVisualEffectView *blur = [[UIVisualEffectView alloc] initWithEffect:effect]; 
blur.frame = CGRectMake(_images.frame.origin.x, _images.frame.origin.y, _images.frame.size.width, _images.frame.size.height +50); 
[_images addSubview:blur]; 

[UIView animateWithDuration:.1 animations:^{ 
    blur.alpha = .7; 
}]; 

}

+0

あなたも制約を表示する必要がありますが、問題のようです –

+0

ちょうど私またはuちょうど両側にアンカーを配置するのではなく、高さと幅を設定しますか? –

+0

@MilanNosáľ私の投稿を編集しました – kAiN

答えて

2

あなたが呼んでいるを示しています。その時点で、自動レイアウトはすべてのビューをレイアウトしていないので、_images.boundsはあなたのストーリーボードにあるものと一致します。

画像ビューの右側がでマスクされているのは、グラデーションレイヤーがカバーしていないためです。です。

あなたは、私がお勧めするもの、そこにグラデーションマスクを追加する UIImageViewをサブクラス化され自動レイアウト後のポイント にサイズ/グラデーションマスクの作成を移動するか終了する、または必要とし、それを自動持っ

layoutSubviews()にサイズを変更してください。

編集:副注釈として、表示アニメーションをviewDidLoad()に配置しないでください。ほとんどの場合、表示されません。

+0

実際問題はこれだけでした!ありがとうございました...私はまだ私のuicollectionviewと少しの助けが必要になります..セルは、さまざまなデバイス間のcollectionViewフローレイアウトの衝動に正しく応答しません、私はそれが常に制約の問題だと思う..私はそれを参照してくださいiPhone SEどうすればこの問題を解決できますか? – kAiN

-2

uはシミュレータiPhone 8を選択し、携帯電話にその向きを選択するオプションがそこでMainStoryboardの下に、次にiPhone 8が必要な場合は、

uが必要とされ、電話を選択1.first ....これを試してみてくださいiPhone 8の表示を選択します。 2. ViewControllerで画像を配置します 3. Xcodeの横で画像を選択し、次に自動サイズ変更オプションで水平と垂直の線を選択します。

その後、uを実行すると正しい表示が得られます。

関連する問題