我有一个标签栏应用,第二个标签转到导航控制器风格的视图。
在导航栏的rightButton上我有一个相机图标,以模态方式呈现ImagePicker。但它不会成为全屏,而是在标签栏下面。
第一张图片显示我有一个导航控制器容器,这是第一个带有摄像头按钮的rootView。单击它将只创建一个UIImagePickerController并以模态方式呈现它。没什么特别的。
first http://www.jobline.com.sg/images/no_use/1.png
然而,相机的结果是缺少控制来取消/取消图像:
second http://www.jobline.com.sg/images/no_use/2.png
如何隐藏UITabBar并能够看到相机控制?我知道可以这样做,因为Skype配置文件选项卡还有一个摄像头,然后呈现UIActionSheet到“拍照”,然后是全屏摄像头视图。我相信配置文件选项卡也有导航控制器作为其根视图。
万分感谢你的帮助。
以下是我使用的代码:
- (void)takePicture:(id)sender {
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
} else {
imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
}
[self presentModalViewController:imagePicker animated:YES];
}
这是一个相当直接的代码,用于以模态方式呈现imagePicker。所以我想知道为什么没有相机控制,我的tabbar如何重叠它。是因为我的观点层次结构吗?
答案 0 :(得分:2)
好的,我有一个解决方案,但它有点“hacky”。我的想法是向NSNotificationCenter发布一个通知,该通知调用一个隐藏标签栏的方法。一个例子:
在应用程序委托内(或任何控制你的标签栏......)
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(hideTabbar) name:@"hideTab" object:nil];
// Override point for customization after application launch.
// Add the tab bar controller's current view as a subview of the window
self.window.rootViewController = self.tabBarController;
[self.window makeKeyAndVisible];
return YES;
}
-(void)hideTabbar{
[[_tabBarController tabBar] setHidden:YES];
}
然后在出现相机视图时隐藏标签栏,只发布通知,如此
[[NSNotificationCenter defaultCenter] postNotificationName:@"hideTab" object:nil];
当摄像机视线消失时,当然有一个可以取消隐藏它。
希望这有帮助。