2012-07-12 84 views
0

我正在開發一個iOS應用程序,它需要更改UITabBar的高度。首先,我通過tabbar的框架屬性對其進行了更改,但這並沒有給出理想的結果,圖標的大小也非常小。所以,我寫了下面的代碼來改變tabbar的背景並增加圖標的大小。這是iOS私有API實現嗎?

for (UIView *view in ctrl.tabBar.subviews) { 
    if ([NSStringFromClass(view.class) isEqualToString:@"_UITabBarBackgroundView"]) { 
     [view removeFromSuperview]; 

     CGRect frame = ctrl.tabBar.frame; 
     frame.origin = CGPointZero; 
     frame.size.height = floor(frame.size.height/2); 

     UIView *background = [[UIView alloc] initWithFrame:frame]; 
     background.backgroundColor = [UIColor colorWithRed:0.15 green:0.15 blue:0.15 alpha:1.0]; 
     background.userInteractionEnabled = NO; 

     [ctrl.tabBar addSubview:background]; 
     [ctrl.tabBar sendSubviewToBack:background]; 

     [background release]; 
    } 

    for (UIView *subview in view.subviews) { 
     if ([NSStringFromClass(subview.class) isEqualToString:@"UITabBarSwappableImageView"]) { 
      CGRect frame = subview.frame; 
      frame.size.height = 80; 
      subview.frame = frame; 
      subview.contentMode = UIViewContentModeCenter; 
     } 

     if ([NSStringFromClass(subview.class) isEqualToString:@"UITabBarButtonLabel"]) { 
      CGRect sFrame = subview.frame; 
      sFrame.size.height += diff; 
      subview.frame = sFrame; 
     } 
    } 
} 

所以我想確認一下,「這段代碼是否可以批准或不可以?」

+1

如果您的代碼使用未記錄的API,那麼它可能不會被批准。 – Almo 2012-07-12 13:38:42

+0

在這段代碼中,我實際上並沒有使用私有api,而只是檢查類名並向其應用了所有視圖中常見的一些屬性。 – 2012-07-12 17:04:38

回答

0

您不必擔心因使用私人API而被拒絕,因爲您沒有使用私人API。現在很多應用程序都使用自定義選項卡欄存儲在商店中,所以它在這個基礎上也不應該成爲問題。通過某種方式設計標籤欄,但是,您可能不遵守iOS Human Interface Guidelines。根據App Store Review Guidelines,特別是關於this page的第10部分,不遵循接口指南是拒絕的理由。我建議閱讀指南以獲取更多信息;無論如何,他們有很多好的建議。

蘋果似乎比以前更快響應提交的內容,因爲看起來你已經擁有了一切設置,你可以發送它並看看他們說了什麼。我沒有預見到一個重大問題,但蘋果有最後的話。他們經常會告訴你到底發生了什麼,所以你可以很容易地改正。

0

您沒有使用未記錄的API,但是您可能正在玩HIG。沒有確切的說法,如果蘋果會接受這個或不,但絕對不建議違背HIG

所以一切都好!