Просто 2 дня я создал одно приложение, подобное этому, для POC, оказалось, что это проще, чем вы думаете.
Сначала в моем методе applicationdidfinishlaunching:
я добавил imageview, содержащее изображение указателя илиСтрелка с шириной 64, как ширина экрана 320, и у меня есть 5 вкладок в панели вкладок.Вы также можете рассчитать его, если считаете, что в вашем проекте будут динамические вкладки, а затем просто измените ширину изображения в соответствии с этим.
CGRect rect = tabBarpointerImageView.frame;
rect.size.width = sel.window.frame.size.width / tabbarcontroller.viewControllers.count;
tabBarpointerImageView.frame = rect;
Возможно, вы также захотите установить режим содержимого этого изображения.просмотреть как uiviewcontentmodecenter
Также я установил кадр просмотра изображения с помощью некоторого вычисления, подобного этому
CGRect rect = CGRectZero;
rect.size.width = self.window.frame.size.width / tabbarcontroller.viewControllers.count;
rect.size.height = 10;// as image was of 10 pixel height.
rect.origin.y = self.window.frame.size.height - 49;// as the height of tab bar is 49
tabBarpointerImageView.frame = rect;
А затем в методе делегата контроллера панели вкладок
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
просто используйте блок анимации, чтобы анимировать движение указателя, как это
[uiview beginanimation:nil context:nil];
CGRect rect = tabBarpointerImageView.frame;
rect.origin.x = rect.size.width * tabbarcontroller.selectedIndex;
tabBarpointerImageView.frame = rect;
[uiview commitanimations];
PS.Извините, если некоторые варианты написания неверны.