2014-04-04 42 views
4

嘿,我正在使用一個自定義大小的UITabBar與超大圖像。UITabBar上的圖像被擠壓

我的圖像添加到標籤欄項目是這樣的:

UITabBar *tabBar = self.tabBar; 
    UITabBarItem *tabBarItem1 = [tabBar.items objectAtIndex:0]; 
    [tabBarItem1 setImage:[UIImage imageNamed:@"image"]]; 
    [tabBarItem1 setImageInsets:UIEdgeInsetsMake(0, 0, 20, 0)]; 

也因爲圖像是較大的,我希望他們徘徊在多標籤欄的中間,所以我添加插圖。

我的問題是當我編程插入,然後點擊按鈕,按鈕擠壓在自己。它保持了它的寬度,但它的高度在它自己的身上擠壓着。我當然不希望發生這種情況,但我似乎無法瞭解發生了什麼事情。

感謝,Krtko

- 注意對MODS的請鎖定這個線程

- 注意的人回答我的問題。我很感激你的幫助,但那是一個已知的錯誤,所以請停止回答這個問題。謝謝

回答

14

你只在iOS 7上看到這個嗎?

7.1似乎引入了標籤欄圖像插頁的錯誤。如果您不斷點擊或按住標籤,它會根據插頁增長或縮小。如果您點擊另一個標籤,標籤欄圖像會恢復正常嗎?

+0

是啊,敬畏,謝謝你讓我知道。所以我已經走了頭,並在每個圖標的底部添加了一大塊alpha。你認爲你可以用別的方法幫助我嗎?現在,當我只能點擊約75%的按鈕。頂部不會觸發,並會觸發其下的任何子視圖。我沒有調整標籤欄框架,但沒有解決任何問題。謝謝:) – Krtko

+1

@Krtko不要用評論來問第二個問題。相反,問一個新問題! – matt

+0

arg好的,謝謝matt – Krtko

0

刪除您的圖像的insets。使用完全符合所需大小的圖像。我們必須遵循這種方法,直到Apple修復此問題。

0

您可以將UIView放在標籤欄頂部,並將UITapGestureReognizer添加到UIView。點擊時,我確定它在哪裏,併爲標籤欄調用適當的選定項目。黑客,但工作相當不錯,並讓你保持你的插圖價值無論你想要的。

@property UIView tabBarCover;//place on top of uitabbar and give it clear color background 

- (void)viewDidLoad 
{ 
    [tabBar setSelectedItem:[tabBar.items objectAtIndex:0]]; 
    UITapGestureRecognizer *singleFingerTap = 
         [[UITapGestureRecognizer alloc] initWithTarget:self 
             action:@selector(handleSingleTap:)]; 
    [tabBarCover addGestureRecognizer:singleFingerTap]; 

} 

然後每次點擊UIView時,根據用戶觸摸的位置設置選定的項目。我有3個標籤欄項目,所以我只是爲x座標做了一些邏輯。

-(void) handleSingleTap:(UITapGestureRecognizer *) recognizer 
{ 
    CGPoint location = [recognizer locationInView:[recognizer.view superview]]; 
    //NSLog(@"tapped it %lf", location.x); 
    if(location.x<=105){ 
     //1st 3rd tapped, do something 

    } 
    else if(location.x >105 && location.x<=210) 
    { 
     //do nothing, selected item stays same. this is glas 
    }else{ 
     //must be in 3rd section so do that load 

    } 

} 

希望它有幫助。

0

你只檢查是否ios7然後裏面

再次SETFRAME
  • (無效)tabBarController:(的UITabBarController *)tabBarController didSelectViewController:(UIViewController的*)的viewController
7

當使用UIEdgeInsetsMake重要的一點是要底部插入的頂部插入「BE EQUAL」。 例如:item.imageInsets = UIEdgeInsetsMake(6,0,-6,0);

+1

這個答案解決了頂部/底部和右/左的錯誤。缺點是你無法調整圖像大小,只是將其移動。 –