美文网首页
iOS 蒙版弹窗

iOS 蒙版弹窗

作者: geekAppke | 来源:发表于2018-07-27 10:47 被阅读207次

提供show方法

  • 把self添加到Window上、设置尺寸
  • 把其他view添加到self上
    • 不用- (void)layoutSubviews {
    • 初始化创建时设置,或show里设置
  • 开始动画,里面设置最终值
  • 蒙版、显示view分开,各做各的(都在1个view中)
  • iOS 自定义弹框

私有dismiss

  • 完成后从super中移除
  • 完成后,状态还原成初始——>下次再用

进阶self的背景就是蒙版cover

  • 不要设置self.alpha值,把里面子控件也透明处理了
  • 直接设置self.backgroundColor =,做蒙版效果!
  • 不用- (void)layoutSubviews {
#define kPhoneNumButtonH 48
@interface BNCallPhoneView ()
@property (nonatomic, strong) UIButton *phoneNumButton;
@end

@implementation BNCallPhoneView
#pragma mark - Initial Methods
- (instancetype)initWithFrame:(CGRect)frame {
    if (self = [super initWithFrame:frame]) {
        self.backgroundColor = UIColorFromHexAndAlpha(0x000, 0.4);
    }
    return self;
}

#pragma mark - Actions
- (void)callPhoneButtonDidClick {
    [LOAppURLHandler callTel:self.phoneNum];
    [self hide];
}

#pragma mark - Public
- (void)show {
    self.frame = APP_KEYWINDOW.frame;
    [APP_KEYWINDOW addSubview:self];
    [self addSubview:self.phoneNumButton];

    [UIView animateWithDuration:0.3
        animations:^{
            self.phoneNumButton.bottom = kScreenHeight;
        }
        completion:^(BOOL finished){
        }];
}

- (void)hide {
    [UIView animateWithDuration:0.3
        animations:^{
            self.phoneNumButton.top = kScreenHeight;
        }
        completion:^(BOOL finished) {

            [UIView animateWithDuration:.25f
                animations:^{
                    self.alpha = 0.0f;
                }
                completion:^(BOOL finished) {
                    self.alpha = 1.0f; // 重复利用
                    [self removeFromSuperview];
                }];
        }];
}

#pragma mark - Private
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
    [self hide];
}

#pragma mark - Lazy Loads
- (UIButton *)phoneNumButton {
    if (!_phoneNumButton) {
        _phoneNumButton = [UIButton buttonWithType:UIButtonTypeCustom];
        [_phoneNumButton setBackgroundImage:[UIImage imageWithColor:kColorWhite] forState:UIControlStateNormal];
        [_phoneNumButton setTitle:self.phoneNum forState:UIControlStateNormal];
        _phoneNumButton.titleLabel.font = [UIFont systemFontOfSize:16];
        [_phoneNumButton setTitleColor:kThemeColor forState:UIControlStateNormal];
        _phoneNumButton.frame = CGRectMake(0, kScreenHeight, kScreenWidth, kPhoneNumButtonH);
        [_phoneNumButton addTarget:self action:@selector(callPhoneButtonDidClick) forControlEvents:UIControlEventTouchUpInside];
        _phoneNumButton.adjustsImageWhenHighlighted = NO;
    }
    return _phoneNumButton;
}
@end

相关文章

  • iOS 蒙版弹窗

    提供show方法 把self添加到Window上、设置尺寸 把其他view添加到self上不用- (void)la...

  • 弹窗

    弹窗蒙版 css 长按弹窗:

  • iOS 透明蒙版 弹窗

    之前是在window上add一个view,需要控制他的add remove hidden 很麻烦。 其实可以直接弹...

  • 微信小程序自定义弹窗滑动使下方界面滑动问题

    微信小程序自定义的弹窗,当弹窗蒙版显示出来的时候,滑动蒙版,被蒙版遮盖的界面依然可以滑动,解决此问题,可以使用ca...

  • iOS怎么禁止子视图响应父视图的手势

    iOS做弹窗的时候,通常加一个黑色半透明的蒙板,点击蒙板弹窗消失,所以给蒙板添加单击手势,这个时候弹窗上面的点击手...

  • 制作web蒙版

    今天做项目需要制作蒙版。根据实际经验来看。基于ios比web制作蒙版容易太多了。为什么web制作蒙版这么难呢?在我...

  • 禁止弹窗蒙版底部滚动

    打开弹窗时,给body添加class,body-fixed 弹窗打开时给body添加类body-fixed 这种方...

  • #设计百天# D3. 功能性图标临摹

    iOS功能图标临摹 风格要点:蒙版+高斯模糊 / 大框+小图标 蒙版:颜色:#c9caca 透明度:40% 图标...

  • 面试总结

    一. 火石买手(电话面) 1.实现一个弹窗效果蒙版fixed,left:0,top:0,color:rgba,具体...

  • iOS 引导蒙版封装流程

    参考文档: 一劳永逸,iOS引导蒙版封装流程

网友评论

      本文标题:iOS 蒙版弹窗

      本文链接:https://www.haomeiwen.com/subject/cplbmftx.html