这是一个 iOS 的下拉面板控制,具有模糊背景和屏幕边缘激活手势。
将以下代码添加到您的 CocoaPods Podfile
pod 'MCPanelViewController'
或者作为 git 子模块克隆
或者直接将 MCPanelViewController
文件夹的文件拷贝到您的项目中
首先,设置您的视图控制器以显示在面板视图控制器中,然后如以下示例所示实例化 MCPanelViewController
UIViewController *controller = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"LightPanelViewControllerInNavigationController"];
MCPanelViewController *panelController = [[MCPanelViewController alloc] initWithRootViewController:controller];
或者使用 UIViewController
上的便捷方法
MCPanelViewController *panelController = [controller viewControllerInPanelViewController];
调整视图控制器上的 preferredContentSize
以设置面板的所需宽度(默认为 320 个点)。高度被忽略
controller.preferredContentSize = CGSizeMake(440, 0);
要程序性地打开面板,例如从按钮
[panelController presentInViewController:self.navigationController withDirection:MCPanelAnimationDirectionRight];
或者使用 UIViewController
上的便捷方法
[self.navigationController presentPanelViewController:panelController withDirection:MCPanelAnimationDirectionRight];
您也可以使用 MCPanelAnimationDirectionLeft
。在全屏视图控制器中呈现控制器,例如顶级导航控制器
以此方式从呈现的视图控制器中消失
[self.panelViewController dismiss];
关闭背景蒙版效果
panelController.masking = NO;
关闭面板上的滑动手势
panelController.panningEnabled = NO;
调整面板的背景样式
panelController.backgroundStyle = MCPanelBackgroundStyleTinted;
panelController.tintColor = [UIColor colorWithRed:0.7 green:0.7 blue:1 alpha:1];
您还可以使用背景样式 MCPanelBackgroundStyleLight
、MCPanelBackgroundStyleExtraLight
和 MCPanelBackgroundStyleDark
来匹配 iOS 7 内置样式。如果样式不是 MCPanelBackgroundStyleTinted
,则忽略 tintColor
属性。
要配置顶级视图控制器上的屏幕边缘手势,使用以下在 UIViewController
上的便捷方法
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[self.navigationController addGestureRecognizerToViewForScreenEdgeGestureWithPanelViewController:panelController withDirection:MCPanelAnimationDirectionRight];
}
- (void)viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
[self.navigationController removeGestureRecognizersFromViewForScreenEdgeGestureWithPanelViewController:panelController];
}
MCPanelViewController 在 MIT 许可下。