サイズ変更しようとするとボタンの背景に問題があります。私はインターフェイスビルダーで自動サイズ調整と5.5インチのiPhone画面を使用しています。 iPhone 6plusと6s plusボタンはインターフェースビルダーのように見えるが、6と5sでは、インターフェースビルダーのボタン背景の幅が4と4.7インチのボタンの背景幅を見る。しかし、私はボタンを押して再描画し、私が望むように正しいように見える(2番目のスクリーンショット)。ここにスクリーンショットがあります。どうすれば修正できますか?ここでグラデーションの背景のボタンのサイズを変更するにはどうすればよいですか?
のviewDidLoad
//** Gradient for red buttons **\\
colorsForRedButtonGradient = [NSArray arrayWithObjects:
(id)[UIColor colorWithRed:139.0/255.0 green:2.0/255.0 blue:2.0/255.0 alpha:1.0].CGColor,
(id)[UIColor colorWithRed:155.0/255.0 green:21.0/255.0 blue:21.0/255.0 alpha:1.0].CGColor,
nil];
highlightedColorsForRedButtonGradient = [NSArray arrayWithObjects:
(id)[UIColor colorWithRed:139.0/255.0 green:2.0/255.0 blue:2.0/255.0 alpha:0.5].CGColor,
(id)[UIColor colorWithRed:155.0/255.0 green:21.0/255.0 blue:21.0/255.0 alpha:1.0].CGColor,
nil];
NSArray *locationForRedButtonGradient = [NSArray arrayWithObjects:
[NSNumber numberWithFloat:0.0f],
[NSNumber numberWithFloat:1.0f],
nil];
gradientLayerForSoundButton = [CAGradientLayer layer];
gradientLayerForPopupButton = [CAGradientLayer layer];
gradientLayerForVibroButton = [CAGradientLayer layer];
gradientLayerForVibroButton.frame = _vibroButton.layer.bounds;
gradientLayerForSoundButton.frame = _soundButton.layer.bounds;
gradientLayerForPopupButton.frame = _popupButton.layer.bounds;
gradientLayerForVibroButton.colors = colorsForRedButtonGradient;
gradientLayerForVibroButton.locations = locationForRedButtonGradient;
gradientLayerForSoundButton.colors = colorsForRedButtonGradient;
gradientLayerForSoundButton.locations = locationForRedButtonGradient;
gradientLayerForPopupButton.colors = colorsForRedButtonGradient;
gradientLayerForPopupButton.locations = locationForRedButtonGradient;
gradientLayerForVibroButton.cornerRadius = _vibroButton.layer.cornerRadius;
[_vibroButton.layer insertSublayer:gradientLayerForVibroButton atIndex:0];
gradientLayerForSoundButton.cornerRadius = _soundButton.layer.cornerRadius;
[_soundButton.layer insertSublayer:gradientLayerForSoundButton atIndex:0];
gradientLayerForPopupButton.cornerRadius = _popupButton.layer.cornerRadius;
[_popupButton.layer insertSublayer:gradientLayerForPopupButton atIndex:0];
'viewDidLoad'の代わりに' viewDidAppear'に書き込みます。ビューが 'UI'に現れた後に、実際のフレームサイズを自動レイアウトに持つためです。あなたが 'viewDidLoad'でやっているように、xibやストーリーボードで作成したコンポーネントのサイズのフレームを取得しています。 –
私はviewDidAppearでそれを追加して、それは素晴らしいね!ありがとう、男! –