在代码中模拟分割视图控制器的显示模式按钮项
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在代码中模拟分割视图控制器的显示模式按钮项相关的知识,希望对你有一定的参考价值。
拆分视图控制器提供如下显示模式按钮项:
其中隐藏主视图并展开详细视图。
我的问题是,有没有办法在代码中模拟这个按钮的动作?
答案
同样,我也在寻找这个问题的答案。遗憾的是没有多少关于此事。
一个简单的方法是使用UISplitViewController Delegate:
-(UISplitViewControllerDisplayMode)targetDisplayModeForActionInSplitViewController:(UISplitViewController *)svc{
创建我们想要的按钮并使用@Selector
处理动作
以下代码可能会有所帮助:
-(UISplitViewControllerDisplayMode)targetDisplayModeForActionInSplitViewController:(UISplitViewController *)svc{
if (svc.displayMode == UISplitViewControllerDisplayModePrimaryHidden) {
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Login" style:UIBarButtonItemStylePlain target:self action:@selector(showMenu)];
}else{
if ([UIDevice currentDevice].orientation == UIDeviceOrientationLandscapeRight || [UIDevice currentDevice].orientation == UIDeviceOrientationLandscapeLeft) {
self.navigationItem.leftBarButtonItem = nil;
}
}
return UISplitViewControllerDisplayModeAutomatic;
}
发生了什么?
- 首先,我们检查
displayMode
是否是PrimaryHidden
或AllVisible
,并根据我们自定义我们的导航按钮。 - 然后在下面我们检查设备方向,以便可以填充默认的
DisplayMode
按钮。
那么我们按钮的选择器方法可以是:
-(void)showMenu{
if ([UIDevice currentDevice].orientation == UIDeviceOrientationLandscapeRight || [UIDevice currentDevice].orientation == UIDeviceOrientationLandscapeLeft) {
if (self.splitViewController.preferredDisplayMode == UISplitViewControllerDisplayModePrimaryHidden) {
self.splitViewController.preferredDisplayMode = UISplitViewControllerDisplayModeAllVisible;
} else {
self.splitViewController.preferredDisplayMode = UISplitViewControllerDisplayModePrimaryHidden;
}
}
else{
self.splitViewController.preferredDisplayMode = UISplitViewControllerDisplayModePrimaryOverlay;
}
[UIView animateWithDuration:0.5 animations:^ {
[self.splitViewController.view layoutIfNeeded];
}];
}
添加了UIView animation
,使其看起来像苹果的动画。
以上是关于在代码中模拟分割视图控制器的显示模式按钮项的主要内容,如果未能解决你的问题,请参考以下文章