私が達成しようとしていることはかなり単純明快に思えますが、私はこれを丸一日続けてきましたが、それを理解することはできません.
ページ付きスクロール ビューを持つシーンを含むストーリーボード (まだ自動レイアウトを使用していません) があります。コードでインスタンス化する 2 つの XIB もあります。最初の XIB (A) には、UILabel
とジェネリックがありUIView
ます。2 番目の XIB (B) はUIButton
、+ 配置で 5 秒しかありません。最終的な目標は、B を A のジェネリック ビューにロードし (水平方向の中央に配置し、ラベルの下に「デフォルト値」を配置)、スクロール ビューで A がページ全体を占めるようにすることです。
XIB A のビューのサイズを変更すると、汎用ビューのサイズが拡大および縮小されますが、常にラベルの下のデフォルト値のままです。XIB B のビューのサイズを変更すると、ボタンの配置が中央に配置されたままになります (これが必要です)。これは私が望む動作です。
ただし、次のコードでは機能しません。
View A *viewA = [[ViewA alloc] initWithFrame:CGRectZero];
viewA.textLabel.text = @"A label with a rather long text";
ViewB *viewB = [[ViewB alloc] initWithFrame:CGRectZero];
[viewA setTranslatesAutoresizingMaskIntoConstraints:NO];
[viewB setTranslatesAutoresizingMaskIntoConstraints:NO];
[viewA.customView addSubview:viewB]; // customView is the generic view
これにより、次のことがわかります。
(白い部分がスクロールビュー、赤い部分がビューA、緑の部分がビューBです。)
ビュー B がそのスーパービューの幅全体を占めるようにする制約を追加しようとしました。
[viewA.customView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|[viewB]|" options:0 metrics:0 views:NSDictionaryOfVariableBindings(viewB)]];
しかし、その結果は次のようになります。
ボタンを緑色の領域の中央に配置するにはどうすればよいですか? 緑の領域が赤の領域で完全に覆われているのか、赤の領域が緑の領域の中心にあるだけなのかは気にしません。