Interface Builderを使用して、自動レイアウトでStoryboardにUIを作成するとします。あるビューから別のビューに制約をコピーまたは移動できますか?
インターフェイスビルダーを使用している場合、cmd-cまたはedit/copyを使用すると、いくつかの制約が自動的にコピーされます:ビュー階層のコピーを含む制約。それ以外の場合、いいえ、できません。制約を保持する場合は、ビュー全体をコピーします。
コピーするすべての制約を取得するためのハックです:メインビュー内に別のビューコントローラーにコピーする小さなビューがあります。これを行うには、メインビュー全体を新しいビューコントローラーのメインビューにコピーします。 。次に、小さなビュー(サイド階層)を新しいコントローラーのメインビューにドラッグし、不要な古いメインビューを削除しました。このようにして、小さなビュー内のアイテムのすべての制約を保持します。
お役に立てれば :)
XMLの.xib
ファイルが機能します。それらにかなり慣れたので、制約のあるビューを別のビューに移動できました。
私はそれを段階的に説明しようとします:
myView
.xib
ファイル> Open As
> Source Code
または別のエディターで開きます(例:Sublime Text
)myView
を検索すると、次のようなものが見つかります。
<outlet property="myView" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/>
destination
属性の値をコピーします
コピーしたID(i5M-Pr-FkT
)および結果の1つはview
タグになります。
<view contentMode="scaleToFill" id="i5M-Pr-FkT"> <!-- 1 -->
...
</view>
このview
タグ全体を必要なビューのsubviews
タグにカットアンドペーストします。
<view contentMode="scaleToFill" id="Ovp-8Y-qHZ"> <!-- 2 -->
<subviews>
<view contentMode="scaleToFill" id="i5M-Pr-FkT"> <!-- 1 -->
...
</view>
</subviews>
</view>
コピーされたIDの検索を続けると、次のような制約がいくつか見つかります。
<constraint firstItem="w7M-JQ-JWD" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="EwH-B1-XWY"/>
これを両方のスーパービュー(古いものと新しいもの)の最も低い共通の祖先のconstraints
タグに移動する必要があります。
<view contentMode="scaleToFill" id="rK2-sE-P0d"> <!-- 3 -->
<subviews>
<view contentMode="scaleToFill" id="Ovp-8Y-qHZ"> <!-- 2 -->
<subviews>
<view contentMode="scaleToFill" id="i5M-Pr-FkT"> <!-- 1 -->
...
</view>
</subviews>
</view>
</subviews>
<constraints>
<constraint firstItem="w7M-JQ-JWD" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="EwH-B1-XWY"/>
</constraints>
</view>