美文网首页
iOS如何做一个popView

iOS如何做一个popView

作者: QYiZHong | 来源:发表于2018-03-19 12:04 被阅读559次

    之前我一直是用自定义的view和动画配合来做popView,直到我看到了一个叫<strong>UIPopoverPresentationController</strong>的东西

    我的做法是先写一个自己的ViewController

    然后写一个初始化的方法,sourceView就是箭头指向的那个视图,sourceRect就是那个视图的rect,permittedArrowDirections则是箭头指向的方向

    - (instancetype)initWithSourceView:(UIView*)sourceView contentSize:(CGSize)size{
    self = [super init];
    self.modalPresentationStyle = UIModalPresentationPopover;
    self.preferredContentSize = size;
    self.popoverPresentationController.sourceView = sourceView;
    self.popoverPresentationController.sourceRect = sourceView.bounds;
    self.tableViewSize = size;
    self.popoverPresentationController.permittedArrowDirections = UIPopoverArrowDirectionUp;
    self.popoverPresentationController.backgroundColor = [UIColor whiteColor];
    self.popoverPresentationController.delegate = self;
    return self;
    }
    

    代理是<strong>UIPopoverPresentationControllerDelegate</strong>

    然后还要写一个方法,如果不写这个方法就会导致点击完出现黑屏

    - (UIModalPresentationStyle)adaptivePresentationStyleForPresentationController:(UIPresentationController *)controller{
    return UIModalPresentationNone;
    }
    

    点击模板消失

    - (BOOL)popoverPresentationControllerShouldDismissPopover:(UIPopoverPresentationController *)popoverPresentationController{
    return true;
    }
    

    之所以要自己弄是因为能在popView上放东西,比如说一个tableView

    self.tableView = [[UITableView alloc]init];
    self.tableView.delegate = self;
    self.tableView.dataSource = self;
    self.tableView.frame = CGRectMake(0, 0, self.tableViewSize.width, self.tableViewSize.height);
    self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
    [self.view addSubview:_tableView];
    

    补充一个问题,就是我修改如:

    self.popoverPresentationController.backgroundColor = [UIColor greenColor];
    

    是没有效果的,所以我用的是KVC的方法去修改

    [self.popoverPresentationController setValue:[UIColor greenColor] forKey:@"backgroundColor"];
    

    相关文章

      网友评论

          本文标题:iOS如何做一个popView

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