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;
    
}



最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容