SplitFrameViewControllerに似たものを作成していますが、カスタム実装を作成するのに十分な違いがあります。「マスター」ビューのサイズを使用可能な画面の25%にし、「詳細」ビューのサイズを残りの75%にしようとすると、問題が発生します。
何を試してもサイズがおかしいです。MasterViewの幅が広すぎて、詳細が少し重なっています。ペン先ファイルで何か間違ったことをしているのではないかと思いますが、よくわかりません。iPadエミュレーターで得られるサイズは、マスタービューで約35%、詳細ビューで約80%のように見えます。
また、私のプロジェクトの構造について批判/コメント/提案があれば、これも私の最初の試みなので、遠慮なくコメントしてください。
AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.containerViewController = [[ContainerViewController alloc] init];
self.window.rootViewController = self.containerViewController;
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
}
ContainerViewController
結果の長方形の幅をで確認しましたviewWillAppear
が、正しいです。
- (id)init
{
self = [super init];
if (self) {
self.masterViewController = [[MasterViewController alloc] initWithNibName:@"MasterViewController" bundle:nil];
self.detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];
[self addChildViewController:self.masterViewController];
[self addChildViewController:self.detailViewController];
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
[self.view addSubview:self.masterViewController.view];
[self.masterViewController didMoveToParentViewController:self];
[self.view addSubview:self.detailViewController.view];
[self.detailViewController didMoveToParentViewController:self];
}
- (void)viewDidUnload
{
self.masterViewController = nil;
self.detailViewController = nil;
[super viewDidUnload];
}
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
CGRect containerBounds = self.view.bounds;
CGRect masterBounds, detailBounds;
CGRectDivide(containerBounds, &masterBounds, &detailBounds, CGRectGetWidth(containerBounds) * 0.25, CGRectMinXEdge);
self.masterViewController.view.frame = masterBounds;
self.detailViewController.view.frame = detailBounds;
}
編集
最後に次の行を追加してviewWillAppear
、コメントの結果を得ました。
NSLog(@"container bounds: %@", NSStringFromCGRect(containerBounds));
NSLog(@"master bounds: %@", NSStringFromCGRect(masterBounds));
NSLog(@"detail bounds: %@", NSStringFromCGRect(detailBounds));
// container bounds: {{0, 0}, {768, 1004}}
// master bounds: {{0, 0}, {192, 1004}}
// detail bounds: {{0, 0}, {576, 1004}}