質問: ヘッダー ビューがあると、自動レイアウトによってスクロール ビューのサイズが変更されないのはなぜですか?
カスタムビューをスクロールビューに埋め込もうとしていますが、スクロールビューは分割ビューに囲まれています。Xcode 4.5 DP 4 で Interface Builder を使用して次のビュー階層を作成しましたが、Xcode 4.4 でも同じ問題が発生するようです。
NSWindow
NSView (content view of the window)
NSSplitView
NSView (split view panel)
NSView (split view panel)
NSScrollView
TestView (my custom view)
ここで、TestView が NSTableHeaderView (-headerView 経由) プロパティを提供する場合、分割ビューの仕切りを下 (または右) までドラッグして TestView を非表示にすることはできませんが、TestView の初期幅または高さの境界まで停止します。-headerView プロパティが nil を返す場合、仕切りは自由にドラッグできます。
これは、新しい Cocoa アプリケーション プロジェクトを作成し、ビューを追加してプロジェクトを実行するだけで、いつでも再現できます。手順:
- 新しい Cocoa アプリケーション プロジェクトを作成する
- NSTableHeaderView インスタンスを返す headerView プロパティを持つ TestView クラスを作成します。
- MainMenu.xib を編集して分割ビューを追加する
- カスタム ビューを追加して TestView にします
- エディタ -> 埋め込み -> スクロール ビューを選択します。
- プロジェクトを実行する
(制約やその他の Interface Builder メニューには触れていません)
TestView.m:
@implementation TestView {
NSTableHeaderView *_header;
}
- (NSTableHeaderView *)headerView
{
if (!_header) {
_header = [[NSTableHeaderView alloc]
initWithFrame:NSMakeRect(0.0, 0.0, 100.0, 17.0)];
}
return _header;
}
@end
ポインタがあれば、分割ビューの仕切りを再び動かすにはどうすればよいですか?