iOS:在 iPhone 8 和 iPhone 8 plus 屏幕上设置视图

Posted

技术标签:

【中文标题】iOS:在 iPhone 8 和 iPhone 8 plus 屏幕上设置视图【英文标题】:iOS: Setup a View on iPhone 8 and iPhone 8 plus screens 【发布时间】:2018-01-08 18:53:21 【问题描述】:

我有一个自定义单元笔尖,我希望它适合 iPhone 8 和 iPhone 8 plus 屏幕。我只能让它适合其中一个,但不能同时适合两者。我想让视图宽度等于 414 的加号和 375 的正常,所以我决定对特征使用变化,这是行不通的。

这是 8 plus 设置:

点击完成变化后,我像这样设置正常的 8

它不工作。只有当我手动将笔尖宽度拖动到 375 或 414 时,它才适用于其中一个。例如,如果我将笔尖拖动到 375,那么加号将如下所示:

如何让这个笔尖适合所有屏幕?我的集合视图四面都有 0 边距约束,并且单元格大小设置如下:

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize 
    return CGSize(width: view.frame.width, height: view.frame.height)

所以我不知道为什么会这样。

【问题讨论】:

【参考方案1】:

您不应该创建宽度+高度约束和中心 imageView,而是将其侧面挂钩到其父视图。如果集合视图约束设置正确并且 sizeForItemAtIndexPath: 返回正确的值,它将执行您想要的操作。

【讨论】:

我对宽度或高度没有限制,它是可调整大小的笔尖视图。我不确定我应该把它放在什么尺寸,所以它适合所有屏幕。我有单元格在 sizeForItem 方法中覆盖整个屏幕。我将其添加到问题中。 将视图和照片 ImgV 挂钩到具有约束的超级视图或为其设置自动调整大小的蒙版。 Nib 视图不会自行调整大小。如果您不设置约束,则视图将保持 nib 的大小和位置。我非常怀疑您是否需要为 PhotoImgView 放置确切的大小或为此任务使用 sizeClasses。【参考方案2】:

使用前导,尾随并给superview提供equalWidth并根据它设置乘数常数。所以它会根据屏幕大小进行调整。 (iPhone 8 为 375,iPhone 8 plus 为 414)。 如果您希望宽度覆盖整个宽度,则将乘数设置为 1。您就完成了。

【讨论】:

【参考方案3】:

问题的原因是我覆盖了 layoutSubviews 并将其留空。

    override func layoutSubviews() 

刚刚删除它,一切顺利。

【讨论】:

以上是关于iOS:在 iPhone 8 和 iPhone 8 plus 屏幕上设置视图的主要内容,如果未能解决你的问题,请参考以下文章

在 iPhone 5s iOS 8.1.2 和 Simulator 8.1 上找不到支持 type 4 和 5 的键盘

运行 iOS 8.3 的 iPhone 在 Xcode 6.2 中显示为不合格

在iPhone 8上的iOS 11.2上运行的离子动态图像,但在iPhone 6上不在11.2上

Ad hoc 无法在 iPhone 5 iOS 8 上运行

UIInterfaceOrientation 无法确定 iOS 7 和 iOS 8 iPhone 上的界面方向

对于相同的 iPhone 5s,iOS 模拟器在 ios 7.1 和 ios 8.2 之间具有不同的屏幕高度