Closed szmichaelyb closed 3 years ago
再做具体业务的时候,发现使用[LeeOpenAnimationConfig]配置自定义动画的时候,只能使用block动画,样式单一,不能实现想要的动画,希望能支持帧动画。
[LeeOpenAnimationConfig]
containerView]
下面我描述一下帧动画的实现办法,仅为简单实现方式,希望作者能支持,采纳方案,或者实现更完善的解决方案,谢谢~
LEEAlertHelper.h文件
LEEAlertHelper.h
typedef LEEBaseConfigModel * _Nonnull (^LEEConfigToBlockAndBlock)(void(^)(UIView *containerView,void(^animatingBlock)(void),void(^animatedBlock)(void)));
LEEAlert.h文件
LEEAlert.h
@property (nonatomic, copy, readonly) LEEConfigToBlockAndBlock LeeOpenAnimationConfig;
LEEAlert.m文件
LEEAlert.m
@property (nonatomic, copy) void(^modelOpenAnimationConfigBlock)(UIView *containerView, void(^animatingBlock)(void), void(^animatedBlock)(void)); - (LEEConfigToBlockAndBlock2)LeeOpenKeyAnimationConfig { return ^(void(^block)(UIView *containerView,void(^animatingBlock)(void),void(^animatedBlock)(void))){ self.modelOpenAnimationConfigBlock = block; return self; }; } 在 showAnimationsWithCompletionBlock: 方法中 /// 帧动画相关 if (self.config.modelOpenAnimationConfigBlock) self.config.modelOpenAnimationConfigBlock(self.containerView,^{ if (!weakSelf) return ; if (weakSelf.config.modelBackgroundStyle == LEEBackgroundStyleTranslucent) { weakSelf.view.backgroundColor = [weakSelf.view.backgroundColor colorWithAlphaComponent:weakSelf.config.modelBackgroundStyleColorAlpha]; } else if (weakSelf.config.modelBackgroundStyle == LEEBackgroundStyleBlur) { weakSelf.backgroundVisualEffectView.effect = [UIBlurEffect effectWithStyle:weakSelf.config.modelBackgroundBlurEffectStyle]; } CGRect containerFrame = weakSelf.containerView.frame; containerFrame.origin.x = (viewWidth - containerFrame.size.width) * 0.5f; containerFrame.origin.y = (viewHeight - containerFrame.size.height) * 0.5f; weakSelf.containerView.frame = containerFrame; weakSelf.containerView.alpha = 1.0f; weakSelf.containerView.transform = CGAffineTransformIdentity; }, ^{ if (!weakSelf) return ; weakSelf.isShowing = NO; [weakSelf.view setUserInteractionEnabled:YES]; if (weakSelf.openFinishBlock) weakSelf.openFinishBlock(); if (completionBlock) completionBlock(); });
咦 怎么关闭了?
修改描述的时候,不小心关闭了~
为便于支持帧动画,建议将布局弹窗或者sheet的容器视图[containerView]返回给外界
通过验证发现,只要将[
containerView]
返回给外界是可以实现帧动画的。LEEAlertHelper.h
文件LEEAlert.h
文件LEEAlert.m
文件