先上个效果图
示例图
代码
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
网友评论