iphonex上的额外底部空间/填充?(代码片段)

author author     2023-05-13     558

关键词:

在纵向模式下的iPhone X上,如果将安全区域的底部约束设置为0,则最终会在屏幕底部留出额外的空间。你如何以编程方式获得这个额外填充的高度?

我设法手动确定这个填充的高度是34,这是我如何设法用iPhone X检测实现它:

Swift 4.0和Xcode 9.0

if UIDevice().userInterfaceIdiom == .phone

    switch UIScreen.main.nativeBounds.height
    
        case 2436: //iPhone X
        self.keyboardInAppOffset.constant = -34.0
        default:
        self.keyboardInAppOffset.constant = 0
    

有没有更清晰的方法来检测这个填充的高度?

答案

在iOS 11中,视图具有safeAreaInsets属性。如果你得到这些插图的bottom属性,你可以在iPhone X上获得底部填充的高度:

if #available(iOS 11.0, *) 
    let bottomPadding = view.safeAreaInsets.bottom
    // ...

(同样用于带状态栏的顶部填充)

另一答案

在Objective-C中

if (@available(iOS 11.0, *)) 
   UIWindow *window = UIApplication.sharedApplication.keyWindow;
   CGFloat bottomPadding = window.safeAreaInsets.bottom;

另一答案

如果突然你没有视图,例如CollectionViewLayout,你也可以从Window中检索它:

private static var itemHeight: CGFloat 
    guard #available(iOS 11.0, *),
        let window = UIApplication.shared.keyWindow else 
            return Constants.itemHeight
    
    return Constants.itemHeight - window.safeAreaInsets.bottom

另一答案
var bottomPadding: CGFloat = 0.0
if #available(iOS 11.0, *) 
     let window = UIApplication.shared.keyWindow
     bottomPadding = window?.safeAreaInsets.bottom ?? 0.0

现在您可以根据需要使用bottomPadding

另一答案

使用此行成为iPhoneX的最低价值

if #available(iOS 11.0, *) 
            let bottomPadding = view.safeAreaInsets.bottom
  

并且不要忘记在layoutSubviews()中添加它,因为safeAreaInsets在layoutSubviews()中具有正确的大小,否则您将成为错误的值。

另一答案

iOS 11(上面的答案混合)

let padding = UIApplication.shared.keyWindow?.safeAreaInsets.bottom ?? 0

Xamarin 形式的 iPhone X 中的额外底部和顶部空间

】Xamarin形式的iPhoneX中的额外底部和顶部空间【英文标题】:ExtrabottomandtopspaceiniPhoneXinXamarinform【发布时间】:2018-08-1610:34:34【问题描述】:我正在使用XAML进行UI设计,我的应用在少于IphoneX的设备上运行良好。唯一的问题是IphoneX... 查看详情

如何删除 textView 上的顶部和底部填充?

】如何删除textView上的顶部和底部填充?【英文标题】:HowtoremovetopandbottompaddingonatextView?【发布时间】:2019-12-2908:46:36【问题描述】:我有一个textView,我想删除文本顶部和底部的所有填充和额外空间。这是我的XML:<TextViewandro... 查看详情

引导程序上的移动视图在容器底部有额外的空白空间

】引导程序上的移动视图在容器底部有额外的空白空间【英文标题】:mobileviewonbootstraphasextrawhitespaceatthebottomofcontainer【发布时间】:2022-01-1221:31:39【问题描述】:whitespaceonmobile页面顶部有烦人的空白,我想弄清楚如何在移动设... 查看详情

对话框中的 Gridview 项目在每个项目后显示额外的底部填充

】对话框中的Gridview项目在每个项目后显示额外的底部填充【英文标题】:GridviewItemsinDialogshowingextrabottompaddingaftereveryitem【发布时间】:2022-01-2320:51:12【问题描述】:我正在尝试创建一个对话框来显示点击事件的评论列表。但是... 查看详情

如何删除 QMChatViewController 底部的一些额外空间?

】如何删除QMChatViewController底部的一些额外空间?【英文标题】:HowtoremovesomeextraspaceatbottominQMChatViewController?【发布时间】:2018-03-1509:21:11【问题描述】:我正在为我的聊天应用程序使用QuickBloxQ-municate,并且在我的应用程序中快... 查看详情

标签从顶部底部有额外的空间?

】标签从顶部底部有额外的空间?【英文标题】:Labelhavingextraspacefromtopbottom?【发布时间】:2018-02-0607:28:51【问题描述】:我在下面创建了一个自定义单元格,如下所示。问题是当我第一次启动时它需要高度(从顶部和底部)。... 查看详情

css额外填充fix(代码片段)

查看详情

html表单字段的额外填充(代码片段)

查看详情

如何将图像限制在 iPhone X 上的 View Controller 底部(低于 home 指示器)

】如何将图像限制在iPhoneX上的ViewController底部(低于home指示器)【英文标题】:HowtoconstraintanimagetothebottomoftheViewControlleroniPhoneX(belowhomeindicator)【发布时间】:2017-11-0522:44:32【问题描述】:我有一个在所有设备上看起来都很好的... 查看详情

iOS:UITableView底部的额外空间

】iOS:UITableView底部的额外空间【英文标题】:iOS:ExtraspaceatthebottomofUITableView【发布时间】:2016-03-1508:38:40【问题描述】:我以编程方式创建了UITableView,但它下方有一些额外的空间(准确地说是29像素)。这是我初始化表格的方... 查看详情

适配iphonex底部安全区(代码片段)

...t:no-repeat;background-size:100%100%;//这里是下面安全区为了不让iphoneX下面的横杠不遮挡按钮或者图片.PlanBo 查看详情

如何从wpftextblock中删除其他填充?(代码片段)

默认情况下,WPFTextBlock似乎应用了额外的顶部和底部填充。我希望事实并非如此。我已经尝试设置负填充,但有一个例外:0,-10,0,0'不是属性'Padding'的有效值。我试过设置LineHeight属性,没有明显效果。这就是TextBlock在Blend中的外... 查看详情

兼容iphonex(代码片段)

兼容IphoneX的显示,一般有两种方法,一种通过css的media来做兼容,一种是通过js来做兼容。一、我们先讲CSS的方法,我们要做两步即可:1.全屏覆盖,html使用<metaname="viewport"content="width=device-width,initial-scale=1,viewport-fit=cover">2.... 查看详情

删除 UIBezierPath 上的额外空间

】删除UIBezierPath上的额外空间【英文标题】:RemoveextraspaceonUIBezierPath【发布时间】:2018-04-2509:29:11【问题描述】:我已使用以下代码将UIBezerPath添加到UIView。extensionCGFloatfunctoRadians()->CGFloat//0360returnself*CGFloat(Double.pi)/180.0overridefu... 查看详情

多行 UILabel 导致额外的填充

】多行UILabel导致额外的填充【英文标题】:Multi-lineUILabelcausingextrapadding【发布时间】:2018-09-2720:28:41【问题描述】:我有一个collectionView单元格,它有一个标签和一个imageView。imageView距离单元格顶部8点,标签顶部距离imageView底... 查看详情

iOS图表,删除底部xAxis标签创建的额外空间

】iOS图表,删除底部xAxis标签创建的额外空间【英文标题】:iOSCharts,RemoveextraspacecreatedbyxAxisLabelsatbottom【发布时间】:2018-10-1501:23:59【问题描述】:我有一个使用iOS图表创建的垂直正常外观条形图。我的问题是,由于某种原因,... 查看详情

iphonex适配-客户端h5页面(代码片段)

由于iphoneX做了全面屏并且还保留一块小刘海,因此很多以前的移动端H5页面需要结合App客户端做出相应的适配,具体如下:1、顶部通栏之前的客户端一直采用状态栏20pt+导航栏44pt的做法。由于iphoneX多了一块小刘海,因此iphoneX单... 查看详情

如何删除这些讨厌的额外空间

...描述】:当我使用chrome开发人员工具检查我的wordpresspage上的顶部小部件时,它会显示一个高度属性,并且该高度会在小部件的顶部和底部添加额外的空间(在附图中以黄色显示)。我已经尝试了很多小时来更改或删除该高度属... 查看详情