2

UINavigationBar定義された高さでサブクラス化し、sizeThatFitsメソッドを実装しようとしています:

@implementation NavigationBar

- (CGSize)sizeThatFits:(CGSize)size {
    NSLog(@"frame: %@", NSStringFromCGRect(self.frame));
    return CGSizeMake(self.frame.size.width, 62);
}

@end

しかし、どうやらself.frame.size.width1024 ではない奇妙な値を常に返しているようです。これは私が目指しているものであり、以下に示す動作を引き起こしています。

NSLog出力:

> frame: {{224, 20}, {576, 62}}

これを手動で定義CGSizeMake(1024, 62)すると、次のようになります。

ボタンを非表示にすると、NSLog出力は次のようになります。

> frame: {{-128, 20}, {1280, 62}}

ナビゲーション バーがすべてのウィンドウにまたがるように、このメソッドを適切に実装する方法についてのアイデアはありますか?

4

2 に答える 2

0

layoutSubviewsと をsizeThatFits一緒に使用するとうまくいくようです:

- (CGSize)sizeThatFits:(CGSize)size {
    return CGSizeMake(1024, 62);
}

- (void)layoutSubviews {
    [super layoutSubviews];
    self.frame = CGRectMake(0, 20, 1024, 64);
}
于 2012-12-05T11:24:41.553 に答える