0
我以編程方式創建UITabBar。這裏是代碼,更新屏幕旋轉的UITabBar寬度
UITabBarItem *item1 = [[UITabBarItem alloc] initWithTitle:@"Item 1" image:[UIImage imageNamed:@"dashboard"] tag:1];
UITabBarItem *item2 = [[UITabBarItem alloc] initWithTitle:@"Item 2" image:[UIImage imageNamed:@"documents"] tag:2];
UITabBarItem *item3 = [[UITabBarItem alloc] initWithTitle:@"Item 3" image:[UIImage imageNamed:@"mail"] tag:3];
UITabBarItem *item4 = [[UITabBarItem alloc] initWithTitle:@"Item 4" image:[UIImage imageNamed:@"packages"] tag:4];
NSArray *tabbaritems = [[NSArray alloc] initWithObjects:item1, item2, item3, item4, nil];
CGRect bounds = [[UIScreen mainScreen] bounds];
UITabBar *tbbar = [[UITabBar alloc] initWithFrame:CGRectMake(0, 411, bounds.size.width, 49)];
[tbbar setItems:tabbaritems];
[self.view addSubview:tbbar];
- (BOOL)shouldAutorotate
{
return YES;
}
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft || toInterfaceOrientation == UIInterfaceOrientationLandscapeRight) {
//update UITabBar width
}
else {
//update UITabBar width
}
}
我有2個問題。正如你所看到的,我已經將CGFloat y
值硬編碼爲411.在肖像模式下,這在3.5英寸的屏幕中看起來很好。但是,你可以想象的問題是,如果我在4英寸的設備上運行它,標籤欄會出現在屏幕的底部。如果我旋轉設備(儘管屏幕大小),在橫向模式下,標籤欄會下降,因此它完全不會出現在屏幕上。
- 我怎樣才能設置UITabBar的位置動態所以不管它在哪個轉速運行 屏幕,它總是出現固定在 屏幕下方?
另一個問題是寬度。當我第一次創建UITabBar實例時,我已經使用這條線設置了它,bounds.size.width
。
- 如何在屏幕旋轉上更新它,使其擴展爲填充屏幕的整個寬度 ?
嗨!非常感謝回覆。當方向改變時,它在定位TabBar方面效果很好。不過,我遇到了一個小問題。比方說,我將設備旋轉到橫向模式。 TabBar的位置很好。然後,當我將其旋轉回縱向視圖時,之前在橫向模式下創建的TabBar仍然顯示爲[this](http://i.imgur.com/NHdwY4u.png)。我怎樣才能擺脫它?再次感謝。 :) – Isuru 2013-03-04 04:00:18
我有種不得不使用'UITabBar'而不是'UITabBarController',因爲我正在實現一個自定義的'UITabBar'。 – Isuru 2013-03-04 04:01:37
由於每次執行旋轉時,新的子視圖都會添加到self.view,您需要在添加新的tbbar之前清除以前添加的tbbar。代碼可能是這樣的:'for(UIView * view in self.view.subviews){ [view removeFromSuperview]; }' – 2013-03-04 13:57:21