web-dev-qa-db-ja.com

iOSの自動レイアウトでビューの動的な幅と高さを設定するにはどうすればよいですか?

スーパービューにUIViewがあります。いくつかの制約を設定しました。ビューのサイズをデバイスごとに異なるものにしたいのですが、幅と高さを修正すると、間違った結果が表示されます。ユーザーに試してみましたアスペクト比ですが、複数のデバイスでビューが大きすぎたり小さすぎたりします。

すべてのデバイスで同じように見える必要があるのと同じ比率で高さと幅を増やしたいです。ビューの高さと幅を柔軟にしたいのですが、その方法を教えてください。

こちらが画像です enter image description here

前もって感謝します

12
TechChain

サイズクラスを使用します。デバイスごとに異なる設定があると役立ちます。 http://www.raywenderlich.com/83276/beginning-adaptive-layout-tutorialhttps://youtu.be/IwSTXY0awng?t=2m12s

3
Andrew Luca

enter image description here最も簡単な方法は、widthおよびheight制約のアウトレットを作成することです。

次に、電話に応じてviewDidLoadで動的に変更します。

どの電話かを確認するには、480 for iPhone 4S、568for iPhone 5,5Sなど

@interface ScoreListViewController (){
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *widthConstraint;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *heightConstraint;

@end



- (void)viewDidLoad {
[super viewDidLoad];
// Set the value according to your requirement
if(4S){
self.heightConstraint.constant=100;
}

 }
2
Mukesh

以下のスクリーンショットに従ってください:

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

次のような結果が得られます

enter image description here

2
Nischal Hada

動的にレイアウトを変更するための自動レイアウトについてブログ article を書きました。
画面サイズごとに、プログラムで制約を追加できます。
アルゴリズム

  1. 現在のデバイスサイズを取得する
  2. デバイスサイズに応じて必要な制約を取得する
  3. 次に、プログラムで制約を追加します


向きに応じて変更

  • UIDeviceOrientationDidChangeNotification通知をリッスンします
  • 通知に従って新しい制約を追加します
  • 次に、setNeedsUpdateConstraintsを呼び出します。
    詳細とコード例については、ブログ記事と this github repoをご覧ください
0
deltaaruna