最初に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 が適用された後にフレームを取得するにはどうすればよいですか?
ありがとう