English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
مقدمة
إن تنفيذ تأثير خزانة السحب في iOS يتم استخدامه بكثرة في العديد من التطبيقات، ويوجد العديد من الأمثلة على الإنترنت، ويتناول هذا المقال تنفيذ هذا التأثير ببعض الأكواد البسيطة، ويمكن للمتطلبون التعلم معًا.
هذه صورة النموذج
النص التالي هو مثال
#import <UIKit/UIKit.h> @interface MainViewController : UIViewController + (instancetype)mainViewControllerWithLeftViewController:(UIViewController *)leftViewController withMainPageViewController:(UIViewController *)mainPageViewController; @end
#import "MainViewController.h" #define KWidth self.view.frame.size.width #define KHeight self.view.frame.size.height @interface MainViewController () @property (nonatomic,strong)UIViewController *leftVC; @property (nonatomic,strong)UIViewController *centerVC; @property (nonatomic,assign)BOOL isSlider; @property (nonatomic,strong)UIView *corverView; @end @implementation MainViewController + (instancetype)mainViewControllerWithLeftViewController:(UIViewController *)leftViewController withMainPageViewController:(UIViewController *)mainPageViewController{ MainViewController *mainVC = [[MainViewController alloc] init]; mainVC.leftVC = leftViewController; mainVC.centerVC = mainPageViewController; return mainVC; } - (void)viewDidLoad{ [super viewDidLoad]; self.isSlider = NO; self.view.backgroundColor = [UIColor whiteColor]; [self addChildViewController:self.leftVC]; [self.view addSubview:self.leftVC.view]; [self addChildViewController:self.centerVC]; [self.view addSubview:self.centerVC.view]; // 给左视图和主视图添加手势 [self addGestureForView]; } // 给主视图添加遮盖 - (void)addCorverView{ if (self.corverView) { [self.corverView removeFromSuperview]; self.corverView = nil; } self.corverView = [[UIView alloc] initWithFrame:self.centerVC.view.bounds]; _corverView.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.0]; [self.centerVC.view addSubview:self.corverView]; } // 移除主视图遮盖 - (void)removeCoverView{ if (self.corverView) { [self.corverView removeFromSuperview]; self.corverView = nil; } } // 给左视图和主视图添加手势 - (void)addGestureForView{ UISwipeGestureRecognizer *rightGesture = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeRightAction:)]; rightGesture.direction = UISwipeGestureRecognizerDirectionRight; [self.centerVC.view addGestureRecognizer:rightGesture]; UISwipeGestureRecognizer *leftGesture = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeLeftAction:)]; leftGesture.direction = UISwipeGestureRecognizerDirectionLeft; [self.centerVC.view addGestureRecognizer:leftGesture]; UISwipeGestureRecognizer *leftVCLeftSwipeGesture = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(leftVCLeftSwipeAction:)]; leftVCLeftSwipeGesture.direction = UISwipeGestureRecognizerDirectionLeft; [self.leftVC.view addGestureRecognizer:leftVCLeftSwipeGesture]; } - (void)swipeRightAction:(id)sender{ [self moveView:self.centerVC.view scale:0.8 panValue:KWidth]; self.isSlider = YES; [self addCorverView]; } - (void)swipeLeftAction:(id)sender{ [self moveView:self.centerVC.view scale:1 panValue:KWidth / 2]; self.isSlider = NO; [self removeCoverView]; } - (void)leftVCLeftSwipeAction:(id)sender{ [self moveView:self.centerVC.view scale:1 panValue:KWidth / 2]; self.isSlider = NO; [self removeCoverView]; } // تحريك وتكبير عرض - (void)moveView:(UIView *)view scale:(CGFloat)scale panValue:(CGFloat)value{ [UIView beginAnimations:nil context:nil]; view.transform = CGAffineTransformScale(CGAffineTransformIdentity,scale,scale); view.center = CGPointMake(value, view.center.y); [UIView commitAnimations]; } @end
الخلاصة
هذا هو نهاية محتوى هذا المقال، نأمل أن يكون محتوى هذا المقال قد ساعدك في التعلم أو العمل، إذا كان لديك أي أسئلة، فمن الممكن ترك تعليقات للتفاعل.
البيان: محتوى هذا المقال تم جمعه من الإنترنت، حقوق النشر تخص المالك الأصلي، المحتوى تم جمعه من قبل المستخدمين عبر الإنترنت ويتم تحميله بشكل تلقائي، هذا الموقع لا يمتلك حقوق الملكية ولا يتم تعديل المحتوى بشكل يدوي ولا يتحمل أي مسؤولية قانونية. إذا كنت قد وجدت محتوى مخالف لحقوق النشر، فنرجو منك إرسال بريد إلكتروني إلى: notice#oldtoolbag.com (الرجاء استبدال # ب @ عند إرسال البريد الإلكتروني) للإبلاغ، وقدم الأدلة ذات الصلة، وسيتم حذف المحتوى المزعوم فور التحقق منه.