popoverPresentationController使用简单记录


- (void)didClickFliterBtn:(id)sender{
    
    NSLog(@"点击了==========筛选");
    
    UIView * sourceView = (UIView *)sender;
    
    UITableViewController *menuVC = [[UITableViewController alloc] init];
 __weak typeof(self)weakSelf = self;
    menuVC.tableView.delegate = weakSelf ;
    menuVC.tableView.dataSource = weakSelf ;
    menuVC.tableView.separatorStyle = UITableViewCellSeparatorStyleNone ;
    menuVC.tableView.rowHeight = 50 ;
    menuVC.tableView.backgroundColor =  [UIColorFromRGB(0xf9f9f9) colorWithAlphaComponent:0.1];
    
//    menuVC.view.backgroundColor= [UIColorFromRGB(0xf9f9f9) colorWithAlphaComponent:0.7];
    
    
    
    [menuVC.tableView registerClass:[DWHmenuCell class] forCellReuseIdentifier:@"menu"];

    
    // 设置大小
    menuVC.preferredContentSize = CGSizeMake(120, 50 * 3);
    // 设置 Sytle
    menuVC.modalPresentationStyle = UIModalPresentationPopover;//UIModalPresentationPopover;
    // 需要通过 sourceView 来判断位置的
    menuVC.popoverPresentationController.sourceView = sourceView;
    // 指定箭头所指区域的矩形框范围(位置和尺寸),以sourceView的左上角为坐标原点
    // 这个可以 通过 Point 或  Size 调试位置
    menuVC.popoverPresentationController.sourceRect = sourceView.bounds;
    
    menuVC.popoverPresentationController.backgroundColor = [UIColorFromRGB(0xf9f9f9) colorWithAlphaComponent:0.1];
    
    [UIColorFromRGB(0xf9f9f9) colorWithAlphaComponent:0.7];
    menuVC.popoverPresentationController.containerView.layer.shadowColor = [UIColorFromRGB(0xe9e1d2) CGColor];//阴影颜色
    menuVC.popoverPresentationController.containerView.layer.shadowOffset = CGSizeMake(0, 3);//width表示阴影与x的便宜量,height表示阴影与y值的偏移量
    menuVC.popoverPresentationController.containerView.layer.shadowOpacity = 0.08;//
    
    // 箭头方向
    menuVC.popoverPresentationController.permittedArrowDirections = UIPopoverArrowDirectionUp;
    // 设置代理
    menuVC.popoverPresentationController.delegate = self;
    
    //弹出筛选菜单
    [self presentViewController:menuVC animated:YES completion:nil];
        
}

//popover控制器是否点击后消失
-(BOOL)popoverControllerShouldDismissPopover:(UIPopoverController *)popoverController{
    
    return YES;
}

//实现代理方法
-(UIModalPresentationStyle)adaptivePresentationStyleForPresentationController:(UIPresentationController*)controller{
    //返回UIModalPresentationNone为不匹配
    return UIModalPresentationNone;
}


//已经消失的时候调用
-(void)popoverPresentationControllerDidDismissPopover:(UIPopoverPresentationController* )popoverPresentationController{
    self.topView.filterBtn.selected = NO;
    
}



最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容