首页 > 解决方案 > iOS 自定义 UIView 在 iphone xr 和 iphone 7 中有不同的布局

问题描述

我遇到了自定义 UIView 的自动布局问题,它在 iphone XR 中正确呈现为

六

但在 iphone 7s 中出错(“重置”按钮超出范围) 在此处输入图像描述

并在情节提要中设置只有一个视图控制器(UI),没有指定的 UIViewController 类,为简化起见,我只想调试视图,所以我不将任何视图控制器类与其关联。

ps 安全区域已被使用

在此处输入图像描述

和自定义类 UI(FilterView) 设置: 在此处输入图像描述 和自定义类 UI(FilterView) 代码:

override init(frame: CGRect){
    super.init(frame: frame)
    setUpView()
}
//for IB
required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
    setUpView()
}



private func setUpView(){
    Bundle.main.loadNibNamed(Constants.NIB_FILTER_VIEW_NAME, owner: self, options: nil)
    addSubview(contentView)
    contentView.frame = self.bounds
    contentView.autoresizingMask = []
    contentView.translatesAutoresizingMaskIntoConstraints = true

}

有谁知道这里发生了什么?

标签: iosswiftuiviewautolayout

解决方案


您不应该以这种方式创建 X 按钮和“排序依据”标签。您正在做的是复制 UINavigationController 所做的事情。如果您想要该布局,请将您的视图控制器放在 UINavigationController 中,这样添加 X 和“排序依据”标签会容易得多。

同样通过这样做,您可以添加一个rightBarItem作为您的“重置”按钮。同样,您不必将其布置出来。UINavigationController 为您完成所有这些工作。


推荐阅读