【问题标题】:Manage bottom button in iphone8 & iphone12 swift管理 iphone 8 和 iphone 12 swift 中的底部按钮
【发布时间】:2021-07-16 08:29:27
【问题描述】:

在 iPhone8 之类的矩形边缘设备中,我需要一个底部按钮卡在底部边缘并带有尖角。而在 iPhone12 之类的弯曲边缘设备中,我需要一个底部按钮,在右下角有一定距离,并带有角半径。

如何在情节提要上管理它?请查看下图以更好地理解。

【问题讨论】:

  • 您如何在情节提要中为该按钮设置约束,您能否添加您的代码或情节提要图像?因为您必须将前导、尾随和底部空间设置为 safeAreasuperview 才能达到结果
  • @KishanBhatiya 添加。请检查。
  • 您需要将 Button 的前导和尾随提供给 View,然后它将有左右空格。移除Button的Width约束。

标签: ios swift autolayout traits iphone12


【解决方案1】:
  1. 删除宽度约束,等于 Superview 约束,您已经给出了。
  2. 为 Button 提供前导和尾随约束
  3. 查看下方图片。

【讨论】:

  • 那么方形边缘设备呢?
  • @krutika 您只需要处理底部空间。在边缘设备中,按钮与底部 bcz 的距离为 0,它们没有 SafeAreaView。而Notch设备有SafeareaView,默认情况下我们在Notch Devices中给SafeAreaView的Bottom空格。
  • @krutika 修复 Notch 设备的底部空间问题,您需要从 SuperView 而不是 SafeArea 提供底部空间。
【解决方案2】:

据我所知,故事板没有直接的方法来实现这一点。如果我是你,我会

  1. 检查设备是否有弯曲边缘(即设备是iPhone X或更高型号)然后
  2. 根据上述检查以编程方式设置按钮约束。

没有提供用于检查设备是否具有弯曲边缘的官方 API,但这是我的解决方案,所以如果有人知道更好的 hack,请告诉我。

extension UIDevice {
    var iPhoneXOrAboveModel: Bool {
        return UIScreen.main.nativeBounds.height >= 2436
    }
}

现在,您可以在视图控制器中使用此扩展并约束您的按钮。

if UIDevice.current.iPhoneXOrAboveModel {
            // Has curved edges
            NSLayoutConstraint.activate([
                button.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 20),
                button.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant:  -20)
            ])
            button.layer.cornerRadius = 12
        } else {
            // Has square edges
            NSLayoutConstraint.activate([
                button.leadingAnchor.constraint(equalTo: view.leadingAnchor),
                button.trailingAnchor.constraint(equalTo: view.trailingAnchor)
            ])
        }

【讨论】:

    猜你喜欢
    • 2018-08-28
    • 1970-01-01
    • 2018-07-11
    • 1970-01-01
    • 2019-03-14
    • 1970-01-01
    • 2011-11-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多