私はそれを持っUITabbarController
てUINavigationController
います。UIView
のとして割り当てたview
のサブクラスがUIViewController
ありnavController
ます。これはかなり標準的なものですよね?これが私のやり方です
_productCategoryView = [[ProductCategoryView alloc] initWithFrame:self.view.frame];
self.view = _productCategoryView;
これにview
はUITableView
subView
_productCategoryTableView = [[UITableView alloc] initWithFrame:self.frame style:UITableViewStylePlain];
_productCategoryTableView.separatorStyle = UITableViewCellSeparatorStyleNone;
_productCategoryTableView.backgroundColor = [UIColor clearColor];
[self addSubview:_productCategoryTableView];
デバッグのためself.backgroundColor = [UIColor blueColor]
に、ビューを設定しています。
上記の初期化から、ビューとテーブルは同じtableView
であると考えるかもしれません。frame
ただし、 を実行するiOS 7
と、ビューの原点が の後ろに設定されますUINavigationBar
。self.navigationBar.translucent = YES;
のサブクラスで設定しているので、これは理解できUINavigationController
ます。しかし、私が理解していないのは、テーブルが のすぐ下にある理由navBar
です。(0, 0)
後ろのどちらからでも始めるべきではないnavBar
ですか?以下のスクリーンショットを参照してくださいScenario 1
。背後の青い色合いに注意してくださいnavBar
さてpush
、viewController
単に[self.navigationController pushViewController.....]
. 繰り返しますが、私にはその中にある習慣UIView
がありtableView
ます。ただし、この表の上にも があり、UILabel
デバッグ用に を付けましたredColor
。今回は、ラベルorigin
をビューとほぼ同じになるように設定しています
CGRect boundsInset = UIEdgeInsetsInsetRect(self.bounds, UIEdgeInsetsMake(10, 10, 10, 10));
CGSize textSize = [_titleLabel.text sizeWithFont:_titleLabel.font
constrainedToSize:CGSizeMake(boundsInset.size.width, MAXFLOAT)
lineBreakMode:NSLineBreakByWordWrapping];
printSize(textSize);
_titleLabel.frame = CGRectMake(boundsInset.origin.x,
boundsInset.origin.y,
boundsInset.size.width,
textSize.height);
上のロジックからすると、ラベルは見えるはずですよね?しかし、今回はそうではありません。今回はラベルが の後ろにありnavBar
ます。
navBar の背後にある赤い色合いに注目してください。
subView を navBar の下に一貫して配置したいと思います。私の質問は
1. How is the tableView offset by 64pixels (height of nav + status bar in iOS 7) automatically, even though it's frame is same as the view's?
2. Why does that not happen in the second view?