zoukankan      html  css  js  c++  java
  • popView

    1.设置代理

    <UIPopoverPresentationControllerDelegate>

    2.为它设置popView的灰色透明背景

    - (void)play:(UIButton *)sender {

        

        if (self.popVc == nil) {

            

            //创建一个遮罩

            UIView *backView = [[UIView alloc]initWithFrame:CGRectMake(0, self.tableViewY, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height)];

            

            self.backView = backView;

            

            backView.backgroundColor = [UIColor blackColor];

            

            backView.alpha = 0;

            

            [self.view addSubview:backView];

            

            [UIView animateWithDuration:0.5 animations:^{

            

                backView.alpha = 0.6;

                

            }];

            

        }

        UUPopViewController * popVc = [[UUPopViewController alloc]init];

        self.popVc = popVc;

        

        popVc.modalPresentationStyle =  UIModalPresentationPopover;

        

        popVc.popDelegate = self;

        

        popVc.preferredContentSize = CGSizeMake(200, 100);

        

        UIPopoverPresentationController *popPreVc = popVc.popoverPresentationController;

        

        self.popPreVc = popPreVc;

        

        popPreVc.sourceView = sender;

        

        popPreVc.permittedArrowDirections = UIPopoverArrowDirectionUp;

        popPreVc.sourceRect = CGRectMake(10, 45, 0, 0);

        

        popPreVc.delegate = self;

        

        [self presentViewController:popVc animated:YES completion:nil];

        

    }

     3.为了防止backView的y跟着tableView进行滚动

    -(void)scrollViewDidScroll:(UIScrollView *)scrollView{

        self.tableViewY = scrollView.contentOffset.y;

    }

    4.在popView消失的代理方法里面将背景视图进行消除

    -(void)popoverPresentationControllerDidDismissPopover:(UIPopoverPresentationController *)popoverPresentationController{

        

         self.popVc = nil;

        

        [UIView animateWithDuration:0.2 animations:^{

            

            self.backView.alpha = 0;

            

        } completion:^(BOOL finished) {

            

            [self.backView removeFromSuperview];

        }];

    }

    5.此外popView的里面的控制器里面应不能直接控制当前控制器的背景视图的产生,所以应该使用代理,点击时清空背景,清空自己

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{

        

        [self dismissViewControllerAnimated:YES completion:nil];

        

        if ([self.popDelegate respondsToSelector:@selector(dismissPopViewAndBackview:)]) {

            [self.popDelegate dismissPopViewAndBackview:self];

        }

    }

    6.当前控制器应当成为这个控制器的代理,并实现代理方法

    - (void)dismissPopViewAndBackview:(UUPopViewController *)popVc{    

        [self popoverPresentationControllerDidDismissPopover:self.popPreVc];

    }

    7.此外还要设置popView的类型(全屏,从64开始等等)

    - (UIModalPresentationStyle)adaptivePresentationStyleForPresentationController:(UIPresentationController *)controller{

        return UIModalPresentationNone;

    }

  • 相关阅读:
    C# GDI+ 文字 阴影,描边 的实现
    NDatabase 入门,简单使用 增删改查。让NDatabase带你脱离ADO.net,各种SQL 语句,各种DBMS,各种CRM,IOC之类的烦恼。我们也不需要仓库设计模式了,你妹的。不要表了,不要设计数据库字段了。就这样!
    D3D 光和材质
    DirectX D3D texture 的Level,解释。。。。
    学习openssl中的hash算法
    ubuntu下使用魅族mx真机调试android程序
    boost 获取时间并格式化
    Mysql:The table‘xxxx’is full
    使用pmap查看进程占用的内存情况
    编译antrl c runtime 3.5步骤
  • 原文地址:https://www.cnblogs.com/chaoyueME/p/5937699.html
Copyright © 2011-2022 走看看