(素材源码)猫猫学IOS(二十六)UI之iOS抽屉效果小Demo

猫猫分享,必须精品

素材代码地址: 原创文章,欢迎转载。转载请注明:翟乃玉的博客 地址:?viewmode=contents

先看效果

源码NYDrawViewController.h(nonatomic, weak, readonly) UIView *mainView;@property (nonatomic, weak, readonly) UIView *leftView;@property (nonatomic, weak, readonly) UIView *rightView;@end

NYDrawViewController.m

(nonatomic, assign) BOOL isDraging;- (void)viewDidLoad{// UIViewController[super viewDidLoad];// Do any additional setup after loading the view.// 1.添加子控件[self addChildView];#warning 第三步 观察_mainView的frame改变// 2.监听/*** 给_mainView添加一个观察者** KeyPath:监听frame这个属性** options:监听新值的改变*/[_mainView addObserver:self forKeyPath:@”frame” options:NSKeyValueObservingOptionNew context:nil];}// 当_mainView的frame属性改变的时候就会调用- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{NSLog(@”%@”, NSStringFromCGRect(_mainView.frame));< 0) { // 往左移动// 显示右边_rightView.hidden = NO;// 隐藏左边_leftView.hidden = YES;}> 0){ // 往右移动// 显示左边_rightView.hidden = YES;// 隐藏右边_leftView.hidden = NO;}}#warning 第一步- (void)addChildView{];leftView.backgroundColor = [UIColor greenColor];[self.view addSubview:leftView];_leftView = leftView;];rightView.backgroundColor = [UIColor blueColor];[self.view addSubview:rightView];_rightView = rightView;];mainView.backgroundColor = [UIColor redColor];[self.view addSubview:mainView];_mainView = mainView;}#warning 第二步- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{// 获取UITouch对象UITouch *touch = [touches anyObject];];];// x轴偏移量:当手指移动一点的时候,x偏移多少CGFloat offsetX = currentPoint.x – prePoint.x;// 设置当前主视图的frame_mainView.frame = [self getCurrentFrameWithOffsetX:offsetX];_isDraging = YES;}- (CGRect)getCurrentFrameWithOffsetX:(CGFloat)offsetX{;;// 获取y轴偏移量,手指每移动一点,y轴偏移多少CGFloat offsetY = offsetX * NYMaxY / screenW;CGFloat scale = (screenH – 2 * offsetY) / screenH;< 0) { // 往左边滑动scale = (screenH + 2 * offsetY) / screenH;}// 获取之前的frameCGRect frame = _mainView.frame;frame.origin.x += offsetX;frame*scale;frame*scale;frame) * 0.5;return frame;}#define NYRTarget 250#define NYLTarget -220/* _mainView.frame.origin.x > screenW * 0.5 定位到右边 CGRectGetMaxX(_mainView.frame) < screenW * 0.5 定位到左边 -220 */// 定位- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{!= 0) {[UIView animateWithDuration:0.25 animations:^{_mainView;}];};CGFloat target = 0;> screenW * 0.5) { // 定位到右边target = NYRTarget;}else if (CGRectGetMaxX(_mainView.frame) < screenW * 0.5) { // 定位到左边target = NYLTarget;}[UIView animateWithDuration:0.25 animations:^{offsetX = target – _mainView;// 设置当前主视图的frame_mainView.frame = [self getCurrentFrameWithOffsetX:offsetX];}else{ // 还原_mainView;}}];_isDraging = NO;}@end

ps:新建iOS交流学习群:304570962 可以加猫猫QQ:1764541256 或则微信znycat 让我们一起努力学习吧。 翟乃玉的博客 地址:?viewmode=contents

,这一次是一个告别,或者一个永远的告别,

(素材源码)猫猫学IOS(二十六)UI之iOS抽屉效果小Demo

相关文章:

你感兴趣的文章:

标签云: