2015-06-16 3 views
0

Я настраиваю UITabBar в подклассе UITabBarController («CustomTabBarVC»). Я хотел использовать пользовательский индикатор выбора изображения, так что я написал это в реализации «CustomTabBarVC»:Как изменить размер изображения индикатора выбора UITabBar в ландшафте

- (void)viewWillLayoutSubviews 
{ 
    CGFloat tabItemWidth; 
    UIView *tabItem = [[[self.tabBar items] lastObject] view]; 
    tabItemWidth = tabItem.frame.size.width; 

    UIImage *selectionIndicator; 

    // Set here 'selectionIndicator' to an UIImage which fits 'tabItemWidth' and tab bar's height 

    [[UITabBar appearance] setSelectionIndicatorImage:selectionIndicator]; 
} 

Это прекрасно работает, когда представление загружается в портретной, но при изменении ориентации устройства на альбомную , хотя метод снова вызван, и selectionIndicator изображение, кажется, занимает новую ширину, оно не перерисовывается, и предыдущее изображение продолжает отображаться. Как я могу справиться с этим?

Благодаря

ответ

0

Когда ориентация устройства переоденется, делегат по умолчанию будет вызван, и вы получите вашу ориентацию в этом методе.

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration 
{ 
// do something before rotation 
} 
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation 
{ 
// do something after rotation 
} 

Затем реализовать viewWillAppear: этот метод будет вызван после делегата ориентации. Теперь вы можете изменить изображение TabBar в этом методе.

+0

Эти методы устарели в iOS 8 ... – AppsDev

Смежные вопросы