Swift: безопасная зона на iPhone - PullRequest
0 голосов
/ 05 июля 2018

У меня есть ViewController с collectionView и collectionView нижним, верхним, ведущим, трейлинг-ограничениями для суперпредставления. А на iPhone 8 мой экран выглядит так:

enter image description here

А для других устройств все выглядит нормально. Но на iPhone X выглядит так:

enter image description here

Я использую этот код для своих клеток:

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {

    let offset: CGFloat = 10
    let width = collectionView.bounds.width / 3  - offset * 4
    let a: CGFloat = width / 2
    let b: CGFloat = a * 3 + a * 0.65
    let height = b

    return CGSize(width: width, height: height) 

    }

Как это исправить?

Update

Ограничения:

enter image description here

1 Ответ

0 голосов
/ 05 июля 2018

С вашими данными я получил вывод ниже.

enter image description here

ПРИМЕЧАНИЕ. В ландшафтном режиме safearea of ​​top равен нулю.

Ограничения:

enter image description here

SizeForItem:

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
        let offset: CGFloat = 10
        let width = collectionView.bounds.width / 3  - offset * 4
        let a: CGFloat = width / 2
        let b: CGFloat = a * 3 + a * 0.65
        let height = b

        return CGSize(width: width, height: height)
    }

Редактировать: проверьте, не является ли этот o / p для вас или нет Так что я объясню. И если вы хотите закрыть безопасную зону, это невозможно.

Iphone X

enter image description here

Iphone 8

enter image description here

...