SCSlidingViewController 1.1.0

SCSlidingViewController 1.1.0

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最后发布2014年12月

未指明的 维护。




  • 作者:
  • Simon Coulton

看到以下Dribbble截图后,我觉得这可能是iOS7中滑动视图控制器最好的解决方案。

Dribble

SCSlidingViewController允许您设置一个(或两个)视图控制器在iOS7中占据完整高度,以便控制状态栏后面的颜色,而顶部视图则位于状态栏下方,类似于iOS6。

使用方法

在您的 RootViewController.m 中,执行以下操作以实例化左侧和右侧(两者均可省略)。

#import "RootViewController.h"
#import "TopViewController.h"
#import "MenuViewController.h"

@interface RootViewController () <SCSlidingViewControllerDelegate>

@end

@implementation RootViewController


- (void)viewDidLoad
{
    // Initial view controller, setup the views to be used.
    [super viewDidLoad];
    self.topViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"Top"];
    self.leftSideViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"Menu"];
    self.rightSideViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"Context"];
}

@end

在您的 RootViewController.h 文件中,确保您已从SCSlidingViewController继承

#import <UIKit/UIKit.h>
#import "SCSlidingViewController.h"

@interface RootViewController : SCSlidingViewController

@end

从您的任何其他视图控制器,当您想要更改顶部分 controller 时,只需调用

[self.slidingViewController changeTopViewController:[self.storyboard instantiateViewControllerWithIdentifier:@"YOUR VIEW CONTROLLER NAME"]];

自定义顶部视图

以下内容已公开(并且在功能上应该是直接的)。

@property (nonatomic) BOOL allowOverswipe;
@property (nonatomic) int topViewOffsetY;
@property (nonatomic) int peakAmount;
@property (nonatomic) CGFloat peakThreshold;
@property (nonatomic) CGFloat cornerRadius;
@property (nonatomic) CGFloat shadowOpacity;
@property (nonatomic) CGFloat shadowOffsetX;
@property (nonatomic) CGFloat shadowOffsetY;
@property (retain, nonatomic) UIColor *shadowColor;
@property (nonatomic) CGFloat animationDuration;

peakThreshold 会影响打开侧边的拖动手势。如果视图控制器被拖动的量超过窗口框架宽度的百分比减去在峰值时的可见数量,则视图控制器将显示,否则顶部分controller将快速回到原始位置。

allowOverswipe 防止在拖动时显示不可见的侧面视图控制器。

事件

以下事件在更改顶部分 controller 时被调用(但是不是通过 self.topViewController 修改来触发的)。

- (void)willChangeTopViewController;
- (void)didChangeTopViewController;

待办事项

  1. 在iOS6上测试,尽管已经进行了一些初步的测试,并且看起来似乎是可行的。
  2. 在UINavigationController中能够圆角显示内容