tab sizes icon custom bottom bars bar ios swift uiview uitabbaritem

ios - custom - tabbar icon sizes



¿Cómo puedo encontrar la UIView para un UITabBarItem específico? (3)

Probado en iOS10 con Objective-C:

[alert setModalPresentationStyle:UIModalPresentationPopover]; UIView *view = [self.tabBar.selectedItem valueForKey:@"view"]; alert.popoverPresentationController.delegate = self; alert.popoverPresentationController.sourceView = self.tabBar; alert.popoverPresentationController.sourceRect = view.frame; alert.popoverPresentationController.permittedArrowDirections = UIPopoverArrowDirectionDown; [self presentViewController:alert animated:YES completion:nil];

Estoy usando una biblioteca externa llamada SwiftyWalkthrough, que me permite exponer solo ciertas vistas en la pantalla para guiar a un nuevo usuario a través de la IU de mi aplicación. El primer elemento que quiero exponer al usuario es un UITabBarItem. Necesito encontrar el UIView asociado con ese UITabBarItem específico. Conozco el índice del artículo y le he dado una etiqueta. Pero no he encontrado la manera de que me ayuden a encontrar la vista. Por supuesto, solo quiero usar interfaces públicas para lograr esto.


Swift 3 versión de la respuesta de Carl Smith

func orderedTabBarItemViews() -> [UIView] { let interactionViews = tabBar.subviews.filter({$0.isUserInteractionEnabled}) return interactionViews.sorted(by: {$0.frame.minX < $1.frame.minX}) }


Resolví mi problema accediendo a las subvistas de tabBar. Las vistas con userInteractionEnabled son UITabBarItems. Ordenarlos por sus valores minX garantiza que están en el mismo orden que la matriz tabBar.items.

extension UITabBarController { func orderedTabBarItemViews() -> [UIView] { let interactionViews = tabBar.subviews.filter({$0.isUserInteractionEnabled}) return interactionViews.sorted(by: {$0.frame.minX < $1.frame.minX}) } }