美文网首页
在 iOS 15 創建 Bottom Sheet:UISheet

在 iOS 15 創建 Bottom Sheet:UISheet

作者: 村雨灬龑 | 来源:发表于2022-12-15 14:47 被阅读0次

    先上个效果图

    示例图

    代码

    YLTestController *vc = [[YLTestController alloc] initWithNibName:@"YLTestController" bundle:nil];
        vc.view.backgroundColor = kRandomColor;
        if (@available(iOS 15.0, *)) {
            UISheetPresentationController *sheet = vc.sheetPresentationController;
            // detents 属性是用来指定 sheet 的高度阵列
            sheet.detents = @[
                // 半屏
                UISheetPresentationControllerDetent.mediumDetent,
                // 全屏
                UISheetPresentationControllerDetent.largeDetent
            ];
            
            // 在 Sheet 的顶部显示一个 Grabber (抓取器, 顶部的横线, 触发事件)
            sheet.prefersGrabberVisible = YES;
            // 页面圆角
            // sheet.preferredCornerRadius = 25;
            
            // 在显示 Bottom Sheet 的时候,底层的视图会自动变暗。
            // 如果我们想保持底层视图的光度,设置为 UISheetPresentationControllerDetentIdentifierLarge
            // 设置后点击viewController 外部的空白区域不会收起
            sheet.largestUndimmedDetentIdentifier = UISheetPresentationControllerDetentIdentifierMedium;
    
            // 在我们向上滚动内容时,Sheet 也会被展开, 这并不是我们想要的效果。我们希望在滚动内容时,Sheet 的大小可以保持不变。
            // 防止页面内容滚动和 sheet 的滚动冲突
            sheet.prefersScrollingExpandsWhenScrolledToEdge = NO;
            // 默认值为NO,这意味着工作表默认为紧凑高度的全屏外观。
            // 将此值设置为YES,以便在紧凑型高度尺寸类中使用备用外观,使工作表仅附着在底部边缘的屏幕上。
            sheet.prefersEdgeAttachedInCompactHeight = YES;
            // 一个布尔值,用于确定工作表的宽度是否与其视图控制器的首选内容大小相匹配。
            sheet.widthFollowsPreferredContentSizeWhenEdgeAttached = YES;
        }
        [self presentViewController:vc animated:YES completion:nil];
    

    引用

    輕鬆地在 iOS 15 創建 Bottom Sheet:UISheetPresentationController

    相关文章

      网友评论

          本文标题:在 iOS 15 創建 Bottom Sheet:UISheet

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