web-dev-qa-db-ja.com

Xcode 8の自動サイズ変更の問題

===[〜#〜] edit [〜#〜]========

この問題はXcode 8.1で解決されました。確認しました。

================

自動レイアウトが適切にわかりません。だから、私はすべてのアプリで自動サイズ変更オプションを使用していますが、それは私にとっては問題ありません。これにより、すべての要件を問題なく満たすことができます。

Xcode 8では、古いSwiftプロジェクトをSwift 3.に移行しました。現在、問題が発生しています。

Storyboard SS

画像を参照してください。自動リサイズを設定しました。これまですべてのデバイスで問題なく動作し、このプロジェクトはAppStoreで公開されているため、UIまたはストーリーボードを表示できません。

今、私はプロジェクトでいくつかの更新を行う必要があります。だから私は現在Xcode 8で作業しています。しかし、すべてのコントロールが中央に配置され、UIが台無しになっているため、自動サイズ変更が正しく機能していません。

Output image

また、この問題はデバイスでも持続します。シミュレータとデバイスもチェックインしました。しかし、問題もあります。提案やヘルプは歓迎されます。前もって感謝します。

編集:

昨日はランタイムにのみ問題がありますが、今日のストーリーボードもこの画像のようなビューを変更しました

Storyboard image

つまり、UIデザイン全体が台無しになります。これは変です。

32
Max

同じ問題に直面しています。私の視点として、この問題は自動サイズ変更を使用し、内部の自動サイズ変更マスクのみを任意のView Controllerに設定すると発生します。のように、

enter image description here

そのときに境界の自動サイズ変更マスクも使用すると、この問題は発生しません。のように、

enter image description here

これがxcode 8の実際のバグであるか、xcode 8でこの機能を削除するかわかりません。

最後に、xcode 8で自動レイアウトを使用する必要があることを最後に提案します。

7
Keyur Hirani

Xibまたはストーリーボードから自動サイズ変更のチェックを外してみてください。そしてin viewDidLoad set [_scrollView setAutoresizesSubviews:YES];

これで問題が解決したら試してください

編集:ストーリーボードの場合、Resize view from NIBオプション。

7
Hassy

ストーリーボードについてはわかりませんが、xibファイルの一時的な解決策を見つけました。 [ユーティリティ]パネル(右側のパネル)で、[ファイルインスペクター]タブを選択します。 Interface Builder Documentセクションで、「XCode 7.x」で開くファイルを選択します。 XCode 8の機能を使用しないことを確認し、ファイルを保存して閉じます。

enter image description here

3
Srdr

Xcode 8ベータ2はこの問題を解決しました!!もうチェックしました!

2
Genevios

xcode8のscrollViewでも同じ問題に直面しています

scrollViewを操作する1つのソリューションがあります

最初にシンプルなUIViewを取得し、追加するすべてのコンポーネントをscrollViewに追加し、そのコンポーネントをautoSizingに渡します

また、1つのscrollViewを取得し、プログラムでビューフレームを設定し、さらにscrollView contentSizeを設定して、ビューをscrollViewに追加します。

賢明なように、私の場合、このコードをSwiftプロジェクトのviewDidLoadに追加します

// add view to scrollview

self.scrollObjForNextAppointment.contentSize = CGSize(width:self.scrollObjForNextAppointment.frame.size.width,height:410)

self.viewForScrollContent.frame = CGRect(x:0,y:0,width:self.scrollObjForNextAppointment.frame.size.width,height:410)

self.scrollObjForNextAppointment.addSubview(self.viewForScrollContent)

それは私のために働いています、ありがとう!

2
Sapana Ranipa

「サブビューの自動サイズ変更」をScrollViewにチェック解除することで解決しました

enter image description here

1
Thippi

更新この問題はXcode 8.1で修正されたようです


同じ問題を抱えていて、ここでの違反者はIScrollView要素であることがわかりました。すべてをスクローラーの外側に移動するだけで、以前と同様にすべてが正常に機能することがわかります。

つまり、1つの可能な回避策は、スクロール可能なコンテンツを通常のUIViewに配置し、実行時にプログラムでUIScrollViewに置き換えることです。

1
mojuba

モデレーターがここで私の回答を重複して親切に削除してくれました。

iOS 10での自動サイズ変更は機能しません

Maxに応じて、はい、サブビューのサイズを変更するのは苦痛です。そのため、スクロールビューに単一の「コンテンツビュー」を追加し、そのビュー内で既存のサブビューをすべて移動することをお勧めします。スクロールビューで行ったように、コンテンツビュー内のサブビューを自動サイズ変更し、スクロールビューに合わせてコンテンツビューを自動サイズ変更します。

ViewDidLayoutSubviews内でサイズを変更するのは、そのコンテンツビューです。

繰り返しますが、scrollviewコンストラクト内の「コンテンツビュー」は、autolayoutを使用して自動サイズ変更スクロールビューを取得するための標準的な方法であるため、ベストプラクティスと見なす必要があります。

その方法をここで説明します...

https://spin.atomicobject.com/2014/03/05/uiscrollview-autolayout-ios/

私の方法は少し複雑に思えますが、約15分で約12のシーンとVcのストーリーボードを修正することができました。自動レイアウトを使用してすべてを再構築するには、はるかに長い時間がかかりました。

0
Michael Long

AppleはXCode 8.2をリリースしたばかりで、この問題を修正してくれました。 8.1と並行してインターフェイスデザインにXCode 7.3.1を使用していましたが、8.2を問題なく使用できます。

ただし、ストーリーボードは、新しい「表示方法」機能に対応するために、フレームの幅と高さで更新されます。デバイス/シミュレータでの実行には影響しないようですが。

奇妙なことに、バグ修正 XCode 8.2リリースノート には記載されていません。

元の答え ここ

0
Thermometer