• 弹出菜单效果


    - (void)showPopoverAtPoint:(CGPoint)point inView:(UIView *)view withContentView:(UIView *)cView

    {

     //self为弹出内容cView的superview  

      self.boxFrame = cView.frame;

        self.contentView = cView;

        UIWindow *window = [UIApplication sharedApplication].keyWindow;

        if(!window) {

            window = [[UIApplication sharedApplication].windows objectAtIndex:0];

        }

        UIView *topView = window;//[[window subviews] objectAtIndex:0];

        

        CGPoint topPoint = [topView convertPoint:point fromView:view];

        CGRect topViewBounds = topView.bounds;

        _contentView.frame = _boxFrame;

        _contentView.hidden = NO;

        [self addSubview:_contentView];

        

        self.layer.anchorPoint = CGPointMake(topPoint.x / topViewBounds.size.width, topPoint.y / topViewBounds.size.height);

        self.frame = topViewBounds;

        [self setNeedsDisplay];

        

        [topView addSubview:self];

        UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapped:)];

        [self addGestureRecognizer:tap];

        self.userInteractionEnabled = YES;

        

      //第一步,透明+缩小

        self.alpha = 0.f;

        self.transform = CGAffineTransformMakeScale(0.1f, 0.1f);

        

        [UIView animateWithDuration:0.5f delay:0.f options:UIViewAnimationOptionCurveEaseInOut animations:^{

             //不透明,并且放大到比原来大小稍大

        self.alpha = 1.f;

            self.transform = CGAffineTransformMakeScale(1.05f, 1.05f);

        } completion:^(BOOL finished) {

            [UIView animateWithDuration:0.08f delay:0.f options:UIViewAnimationOptionCurveEaseInOut animations:^{

        //恢复大小到原大小

                self.transform = CGAffineTransformIdentity;

            } completion:nil];

        }];

    }

  • 相关阅读:
    关于在组件GIS开发中使用Python的一点补充说明
    shell环境变量以及set,env,export的区别
    快速配置 Samba 将 Linux 目录映射为 Windows 驱动器
    Expect 教程中文版
    rpm 包管理
    .bash_profile和.bashrc的什么区别
    grep 零宽断言
    自动化测试
    dialog shell下的gui设计 代替繁杂libncurses编程
    x11 gtk qt gnome kde 之间的区别和联系
  • 原文地址:https://www.cnblogs.com/ldc529/p/3831009.html
Copyright © 2020-2023  润新知