Ios 自定义TabBarController功能
我正在尝试使用以下选项创建自定义选项卡栏控制器:Ios 自定义TabBarController功能,ios,ios6,uitabbarcontroller,custom-controls,Ios,Ios6,Uitabbarcontroller,Custom Controls,我正在尝试使用以下选项创建自定义选项卡栏控制器: 喂 地图 新的 摄像机 搜寻 feed、map、camera和search将分别启动各自的VC,而new则更像是一个功能按钮。按下新选项卡项时,应显示地图视图,地图应开始记录用户的位置。我正试图使用uitabarcontroller来管理这些视图,但我似乎不知道如何使用“新建”选项卡实现我想要的功能。似乎我需要为“新建”记录和停止功能实现一个单独的视图控制器,但这似乎并不正确 录制/停止的功能应该类似于snapchat的红色大按钮,当您按下它时,
uitabarcontroller
来管理这些视图,但我似乎不知道如何使用“新建”选项卡实现我想要的功能。似乎我需要为“新建”记录和停止功能实现一个单独的视图控制器,但这似乎并不正确
录制/停止的功能应该类似于snapchat的红色大按钮,当您按下它时,它会拍照 我认为您必须自己实现容器视图控制器。我认为您不能使用UITabBarController来实现这一点。我认为您必须自己实现容器视图控制器。我想你不能用UITabBarController来做这件事。虽然我同意的是,这是一个糟糕的用户体验,但如果你从技术上想做的话,你可以将UITabBarController子类化,然后在
viewDidLoad
中,你可以将UIButton
子视图添加到选项卡栏控制器的tabBar
:
[self.tabBar addSubview:yourCustomButton];
因此,这个按钮可以有自己的操作和选择器来做任何你想做的事情
以一个例子来看。虽然我同意的是,这是一个糟糕的用户体验,但如果您在技术上想这样做,您可以将UITabBarController
子类化,并且在viewDidLoad
中,您可以将UIButton
子视图添加到选项卡栏控制器的tabBar
:
[self.tabBar addSubview:yourCustomButton];
因此,这个按钮可以有自己的操作和选择器来做任何你想做的事情
请看一个例子。我本打算挖掘shawnwall指出的idevrecipes示例,但有另一个可能的答案,假设您希望新按钮与标准UITabBarButton外观匹配。我同意它可能不是最好的UI,但它是可行的 对于初学者,可以为新项创建虚拟视图控制器。我不是说你应该复制“地图”控制器或任何东西,我只是说创建一个空的视图控制器并将其(或其位置)隐藏在属性中。假设您在
应用程序:didFinishLaunchingWithOptions:
中创建选项卡栏,它看起来像这样
self.newViewController = [[UIViewController alloc] init];
self.newViewController.title = NSLocalizedString(@"New", nil);
self.newViewController.image = [UIImage imageNamed:"new.png"];
将该视图控制器放置在选项卡栏控制器的viewControllers
属性中的适当位置
保存对贴图控制器的引用,方法与为虚拟新控制器保存引用的方法相同
如果您尚未完成do,请将tabBarController的委托设置为应用程序委托。您可能需要声明您的应用程序委托符合UITABBARCONTROLLEDELEGATE
uitabardelegate
提供了一些钩子,用于跟踪选项卡栏的更改tabBarController:shouldSelectViewController:
看起来是我们为您的所需行为提供支持的合适场所
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
{
if ([viewController isEqual:self.newViewController]) {
self.tabBarController.selectedViewController = self.mapViewController;
// Whatever logic you need to start the recording
return NO;
}
return YES;
}
用户交互的外观有点奇怪-用户标记中间的项目(新),但左侧的项目(地图)被选中。如果您想要“tab bar triggers behavior”操作,我会选择idevrecipes路线,使按钮在视觉上清晰可见。不过,如果你喜欢选项卡栏项外观,我相信这就是你要实现它的方式。我本来想挖掘shawnwall指出的idevrecipes示例,但有另一个可能的答案,假设你希望新按钮与标准UITabbutton外观匹配。我同意它可能不是最好的UI,但它是可行的 对于初学者,可以为新项创建虚拟视图控制器。我不是说你应该复制“地图”控制器或任何东西,我只是说创建一个空的视图控制器并将其(或其位置)隐藏在属性中。假设您在
应用程序:didFinishLaunchingWithOptions:
中创建选项卡栏,它看起来像这样
self.newViewController = [[UIViewController alloc] init];
self.newViewController.title = NSLocalizedString(@"New", nil);
self.newViewController.image = [UIImage imageNamed:"new.png"];
将该视图控制器放置在选项卡栏控制器的viewControllers
属性中的适当位置
保存对贴图控制器的引用,方法与为虚拟新控制器保存引用的方法相同
如果您尚未完成do,请将tabBarController的委托设置为应用程序委托。您可能需要声明您的应用程序委托符合UITABBARCONTROLLEDELEGATE
uitabardelegate
提供了一些钩子,用于跟踪选项卡栏的更改tabBarController:shouldSelectViewController:
看起来是我们为您的所需行为提供支持的合适场所
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
{
if ([viewController isEqual:self.newViewController]) {
self.tabBarController.selectedViewController = self.mapViewController;
// Whatever logic you need to start the recording
return NO;
}
return YES;
}
用户交互的外观有点奇怪-用户标记中间的项目(新),但左侧的项目(地图)被选中。如果您想要“tab bar triggers behavior”操作,我会选择idevrecipes路线,使按钮在视觉上清晰可见。但是,如果您喜欢选项卡栏项目的外观,我相信这就是您实现它的方式。用户只需转到地图选项卡并添加“新建”按钮,不是更直观吗?至少对我来说是这样。苹果不建议为用户跳转到标签页。该应用背后的想法是记录和分享用户周围的“风景”路线和图片。我一直在使用POP(纸上的原型,应用商店中的一个免费应用程序)来把线框和原型结合在一起测试UX,并且在标签栏中间有一个按钮,比开始在feed或地图上说“新”的Navbar条目感觉要自然得多。我明白你的意思。然而,拥有两个不同的地图可能会让用户感到困惑,特别是如果他们几乎做到了e