Autolayout を使用して iOS 6 アプリケーションで作成された UIView にシャドウを追加する際に問題が発生しました。
UIView の下部に影を追加するメソッドがあるとします (これは実際には UIView のカテゴリであるため、再利用可能です)。
- (void) addShadowOnBottom {
self.layer.shadowOffset = CGSizeMake(0, 2);
self.layer.shadowOpacity = 0.7;
self.layer.shadowColor = [[UIColor blackColor] CGColor];
self.layer.shadowPath = [UIBezierPath bezierPathWithRect:self.bounds].CGPath;
}
いくつかの UIViewController でこのメソッドを呼び出すとviewDidLoad
、おそらく計算する必要があるすべての制約が原因で、シャドウが追加されません。
viewWillAppear
同じ状況でこのメソッドを呼び出すと。
このメソッドを呼び出すviewDidAppear
と機能しますが、新しいビューが表示されると、影がなく、しばらくすると表示される短い瞬間があります。
shadowPath の設定をやめて行を削除すると、self.layer.shadowPath
すべてが機能しますが、ビューの遷移はスムーズではありません。
だから私の質問は、Autolayout がオンになっている iOS 6 でビューに影を追加する正しい方法は何ですか?