0
4.2 iphone sdkをインストールしました。私のプロジェクト(4.0で書かれています)を4.2で実行しました。私は、ツールバーのアイテムがツールバー上に置き忘れられていることに気づきました。どちらもipad、iphoneシミュレーターにあります。これ以外に遭遇した人は他にいますか? 、見てのとおりiphone sdk 4.2:UIBoolButtonItemがUIToolbar上に配置されていません
output http://dl.dropbox.com/u/13741164/toolbar.jpg
ボタンが右サイドでフレームの外にある詳細:ここ
@define TOOLBAR_HEIGHT 34
@define TOOLBAR_ITEM_WIDTH 90
// extends UIView
@implementation MapViewControllerContainer
- (void) setFrame:(CGRect)frame
{
[super setFrame:frame];
if (self.subviews.count == 2)
{
((UIView *)[self.subviews objectAtIndex:0]).frame = CGRectMake(0, 0, frame.size.width, TOOLBAR_HEIGHT);
((UIView *)[self.subviews objectAtIndex:1]).frame = CGRectMake(0, TOOLBAR_HEIGHT, frame.size.width,
frame.size.height - TOOLBAR_HEIGHT);
}
}
@end
// extends UIViewController
@implementation MapViewController
- (void) loadView
{
self.view = [[MapViewControllerContainer alloc] init];
[self.view release];
UIToolbar * toolbar = [[UIToolbar alloc] init];
toolbar.barStyle = UIBarStyleBlack;
UIBarButtonItem * flexibleItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace
target:nil action:nil];
detailsButton = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"Details",@"")
style:UIBarButtonItemStyleBordered target:self
action:@selector(detailsPressed)];
detailsButton.width = TOOLBAR_ITEM_WIDTH;
detailsButton.enabled = NO;
toolbar.items = [NSArray arrayWithObjects: flexibleItem, detailsButton, nil];
[flexibleItem release];
[detailsButton release];
[self.view addSubview:toolbar];
[toolbar release];
// More non-related code here
}
@end
その出力されます。ここでは、コードです。 TOOLBAR_ITEM_WIDTHが小さければ小さいほど、フレームの内側に多くなります。だから、私はツールバーのアイテムの計算にバグがあると思うのですが、それは4.0 sdkでうまくいきます。ご協力いただきありがとうございます。
私は解決策を見つけました。 4.2では、-setFrameが後で呼び出されても、uitoolbarを-initで初期化するべきではありません.initWithFrameは、すべてのボタンを格納するのに十分な大きさのダミーフレームとともに使用する必要があります。 –