[英]iOS Change frame of UITabBarButton in UITabBar
在我的應用程序中,我有一個UITabBarController
,我在AppDelegate
中給AppDelegate
定義選定/未選擇的圖像,如下所示:
UIImage *selectedImage = [UIImage imageNamed:@"home-tab-selected"];
UIImage *unselectedImage = [UIImage imageNamed:@"home-tab"];
UITabBar *tabBar = tabController.tabBar;
UITabBarItem *item1 = [tabBar.items objectAtIndex:0];
[item1 setFinishedSelectedImage:selectedImage withFinishedUnselectedImage:unselectedImage];
我的圖像是100x100,比普通的標簽欄項目大得多。 一切都運作良好,我的圖像放置得很好,看起來很棒。
我遇到的問題是底層UITabBarButton
的框架仍然是76x48,只留下我的標簽的一小部分'可觸摸'。 (下圖中框架周圍有邊框)
為了解決這個問題,在我的子代UITabBarController
viewDidLoad
,我瀏覽了每個UITabBarButton
,並按如下方式設置框架:
for (UIView* subView in self.tabBar.subviews)
{
if ([subView isKindOfClass:NSClassFromString(@"UITabBarButton")])
{
[subView setFrame:CGRectMake(subView.frame.origin.x, subView.frame.origin.y, 100, 100)];
}
}
在我這樣做之后,我記錄了幀並且它們確實發生了變化 - 但是我的標簽欄中的框架永遠不會改變 - 我仍然只能看到並且可以觸摸較小的紅色框。
這是因為Apple不允許您更改這些幀或我在這里做錯了嗎?
任何幫助apperciated! 謝謝!
編輯:
最后,我最終使我的標簽圖像變小了。 我發現70px的高度仍然可以吸引大多數人。
加載后, UITabBarController
視圖的布局可能會發生變化:可以添加其他UITabBarItem
,用戶可以切換到橫向。
在iOS 6之前,沒有辦法配置復雜的布局。 由於UITabBar
是一個非常古老的類,因此很可能在layoutSubviews
方法中完成它的工作。
您可以UITabBar
並覆蓋所述方法,但是如果你走得那么遠,你可能想要創建自己的標簽欄,最后它只是一個帶有一些UIButton
的UIView
。
與底層的UITabBarButtons有類似的問題。 我通過將UITabBar的“項目定位”屬性設置為“填充”來解決它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.