2017-04-25 1 views
4

私はiPhone 7セカンダリビューは、「ビューとして」変更されたときにストーリーボード内で自動的にサイズを変更できますか?

enter image description here

として見たときにストーリーボードにこのようになりますこれは、二次ビューとビューコントローラを持っている。しかし、私はiPhone SEとしてビューに切り替えた場合、それは次のようになります。 enter image description here

ビューコントローラと同じ方法でストーリーボード内で自動的にサイズを変更することは可能ですか?

答えて

0

現在、あなたが説明したことを行う方法はありません。

device configuration paneは、ViewControllersのレイアウトのみを自動的に調整します。UIViewsではありません。

さまざまなデバイスでカスタムUIコンポーネントの外観をプレビューする場合は、UIViewをサブクラス化し、@IBDesignable,@IBInspectableをサブクラス化することを強くおすすめします。また、 "ウィジェット"のデザインをレイアウトするXIBファイルを作成します。

このようにして、他のビューと同じようにカスタムコンポーネントをInterface Builderで使用し、上記のデバイスコンフィグレーションペインを使用してプレビューすることができます。

たとえば、2つのカスタムコンポーネントがあるとします.1つはスイッチボタン付きの簡単な質問で、もう1つはクレジットカードの「ロック/ロック解除」コンポーネントです。

カスタムコンポーネント1

xib01

カスタムコンポーネント2

xib02

:どちらも、 XIBファイルと UIViewサブクラスに依存しています

私は今、どのビューコントローラの内部で、他のビューとInterface Builderでそれらを使用することができます。

IB

そして最後に(今、あなたの質問に取得する)、我々はそれが異なる上のようになりますどのようにプレビューを生きることができますデバイス・コンフィギュレーション・ペインを使用してデバイス:

4Sプレビュー

preview4s

7+プレビュー

preview7+

0

ええと...まずは何を達成しようとしていますか?私はそのような方法でView Controllerにビューを追加したことはありません。そのUIViewのタイトルに基づいて、カスタムビューでエラーを処理しようとしているようです。ここには、 "ビジュアルフォーマットの制約"/NSLayoutConstraintのコードのクイックプレビューが必要です(それほど深くはありません)。

MyCustomView(またはこれまで)と呼ばれるクラスを作成し、それをUIViewから継承させます。次に、あなたのUIViewControllerで、ビジュアルフォーマットで制約を使用する必要があるときに追加することができます。

1)あなたは(このコードは、ビューコントローラ内のどこかにある)、それを提示する必要があり、これまでときにMyCustomViewを初期化して設定します。

let alertView = MyCustomView(frame: CGRect(0,0,200,150)) 

self.view.addSubview(alertView) 

alertView.constrainToSuperView() 

2)これはconstrainToSuperViewは、カスタムクラスで次のようになります。

private func constrainToSuperView() { 

    self.translatesAutoresizingMaskIntoConstraints = false 

    var constraints = [NSLayoutConstraint]() 

    let vertical = NSLayoutConstraint.constraints(withVisualFormat: "V:|[self]|", options: [], metrics: nil, views: ["self": self]) 

    constraints.append(contentsOf: vertical) 

    let horizontal = NSLayoutConstraint.constraints(withVisualFormat: "H:|[self]|", options: [], metrics: nil, views: ["self": self]) 

    constraints.append(contentsOf: horizontal) 

    self.superview.addConstraints(constraints) 

} 

あり、コードに制約を管理について学ぶためにトーンですが、それはトリックしばらく価値があります。カスタムビューを作成し、ストーリーボードを少しきれいに保つのに役立ちます。

注1:MyCustomViewクラスにゼロのコンテンツを追加しました。今すぐ空白のビューが表示されます。コンテンツを追加する方法は2つあります。 Fistでは、コードで制約を書く道を続けることができます。また、.x​​ibファイルを追加して、このカスタムビューの内部を作成することもできます。 2番目の方法はおそらく行く方法です。

注2:カスタムビューをストーリーボードに追加してから、その制約のコンセントを作成することができます。その後、制約をアニメートして、ビューをスクリーンから外したり、画面上でそれを提示する必要があるときに移動したりすることができます。

質問がある場合はお知らせください。私は私の答えを広げてうれしいです。

関連する問題