0

最初にInterface Builderで作成されたUIButtonにグラデーションレイヤーをプログラムで追加しようとしています。ViewController の viewDidLoad メソッドに新しいグラデーション レイヤーを追加しました。グラデーションの追加に問題はありません。

    CAGradientLayer *gradientLayer = [CAGradientLayer layer];
    gradientLayer.frame = self.btn.layer.bounds;

    gradientLayer.colors = [NSArray arrayWithObjects:(id)[[UIColor topGradient] CGColor],(id)[[UIColor bottomGradient] CGColor], nil];
   [self.btn.layer insertSublayer:gradientLayer atIndex:0];

問題は、iPhone 4 の画面サイズでレイアウトされた IB で作成されたボタンからフレームを取得していることです。すべてのサイズ変更マスクが設定され、正しく機能し、iPhone 5 シミュレーターの画面上のボタンは正しいサイズです。

ただし、適用されるグラデーションは、元のフレームに適用されるため、ボタンを部分的にしか塗りつぶしません。autoresizemasks が適用された後にフレームを取得するにはどうすればよいですか?

ありがとう

4

1 に答える 1

0

これをviewWillAppearに追加する必要がありました

于 2013-01-24T16:13:27.610 に答える