美文网首页
在 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