2016-09-01 5 views
0

サイズ変更しようとするとボタンの背景に問題があります。私はインターフェイスビルダーで自動サイズ調整と5.5インチのiPhone画面を使用しています。 iPhone 6plusと6s plusボタンはインターフェースビルダーのように見えるが、6と5sでは、インターフェースビルダーのボタン背景の幅が4と4.7インチのボタンの背景幅を見る。しかし、私はボタンを押して再描画し、私が望むように正しいように見える(2番目のスクリーンショット)。ここにスクリーンショットがあります。どうすれば修正できますか?ここでグラデーションの背景のボタンのサイズを変更するにはどうすればよいですか?

first screenshotenter image description here

の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]; 
+1

'viewDidLoad'の代わりに' viewDidAppear'に書き込みます。ビューが 'UI'に現れた後に、実際のフレームサイズを自動レイアウトに持つためです。あなたが 'viewDidLoad'でやっているように、xibやストーリーボードで作成したコンポーネントのサイズのフレームを取得しています。 –

+0

私はviewDidAppearでそれを追加して、それは素晴らしいね!ありがとう、男! –

答えて

0

で見つける私のコードであなたがすべてのボタンに静的な幅を与えている、のように見ています。すべてのボタンをビューに配置し、先頭の&の後続の制約を設定する必要があります。

また、すべてのボタンに最小幅を設定して、さまざまなデバイスの幅のコントロールを引き継ぐこともできます。また、ビューコントローラーで表示する最小幅と最大幅を指定することもできます。

これはあなたの問題を解決する方法です。

よろしくお願いいたします。

-vikas

関連する問題