簡體   English   中英

iOS在UITabBar中更改UITabBarButton的框架

[英]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並覆蓋所述方法,但是如果你走得那么遠,你可能想要創建自己的標簽欄,最后它只是一個帶有一些UIButtonUIView

與底層的UITabBarButtons有類似的問題。 我通過將UITabBar的“項目定位”屬性設置為“填充”來解決它。

在此輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM