一直觉得自己写的不是技术,而是情怀,一个个的教程是自己这一路走来的痕迹。靠专业技能的成功是最具可复制性的,希望我的这条路能让你们少走弯路,希望我能帮你们抹去知识的蒙尘,希望我能帮你们理清知识的脉络,希望未来技术之巅上有你们也有我。
OC Control Transitioning(转场动画)下载链接
效果
使用
[FHXViewController showVC:self withValue:[NSString new] withBlock:^(NSString * _Nonnull value) {
NSLog(@"value = %@",value);
}];
控制器的编写
#import "FHXViewController.h"
#define bgViewHeight 560
@interface FHXViewController ()<UIViewControllerTransitioningDelegate>
@property (nonatomic,strong) UIViewController *presentingVC;
@property (nonatomic, copy) FHXViewControllerBlcok block;
@property (nonatomic,strong) NSString *value;
@property (nonatomic,strong) UIButton *bgBtn;
@property (nonatomic,strong) UIView *bgView;
@end
@implementation FHXViewController
+(void)showVC:(UIViewController *)vc withValue:(NSString *)value withBlock:(FHXViewControllerBlcok)block{
FHXViewController *FHXVC = [[FHXViewController alloc] init:block withValue:value];
[FHXVC presentVC];
}
-(instancetype)init:(FHXViewControllerBlcok)block withValue:(NSString *)value{
self = [super init];
if (self) {
self.value = value;
self.block = block;
}
return self;
}
-(void)presentVC {
//必须自身遵守代理才能够实现转场动画
self.transitioningDelegate = self;
self.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
self.modalPresentationStyle = UIModalPresentationOverCurrentContext;
self.presentingVC = [GetVC getRootViewController];
[self.presentingVC presentViewController:self animated:YES completion:nil];
}
- (void)viewDidLoad {
[super viewDidLoad];
self.bgBtn = [UIButton new];
self.bgBtn.addTo(self.view).xywh(0, 0, Phone_Width, Phone_Height).bgColor([[UIColor blackColor] colorWithAlphaComponent:0.3]).onClick(^{
self.block([NSString new]);
[self dismissViewControllerAnimated:YES completion:nil];
});
self.bgView = [UIView new];
self.bgView.addTo(self.bgBtn).borderRadius(5).bgColor([UIColor whiteColor]).xywh(0, Phone_Height-bgViewHeight, Phone_Width, bgViewHeight);
}
#pragma mark - UIViewControllerTransitioningDelegate
- (id<UIViewControllerAnimatedTransitioning>)animationControllerForPresentedController:(UIViewController *)presented presentingController:(UIViewController *)presenting sourceController:(UIViewController *)source {
return [[ShopDetailTransitioning alloc] init];
}
- (id<UIViewControllerAnimatedTransitioning>)animationControllerForDismissedController:(UIViewController *)dismissed {
return [[ShopDetailTransitioning alloc] init];
}
@end