Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Swift : pixel, separator, scale

Как обеспечить отрисовку разделителя толщиной в 1 физический пиксель?

Описание: Вопрос проверяет знание, как добиться тонкой линии в интерфейсе с учётом координатной системы points vs pixels.

Короткий ответ

Чтобы линия была в 1px, её толщину задают как 1 / UIScreen.main.scale points. Например, на экране с scale = 3 толщина будет 0.333... pt, что соответствует одному физическому пикселю.

Длинный ответ

Система координат:

1 pt может состоять из нескольких пикселей (scale – 2 или 3).

Вычисление толщины:

let onePixel = 1 / UIScreen.main.scale
let separator = UIView()
separator.backgroundColor = .lightGray
separator.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(separator)
NSLayoutConstraint.activate([
    	separator.heightAnchor.constraint(equalToConstant: onePixel),
    	separator.leadingAnchor.constraint(equalTo: view.leadingAnchor),
    	separator.trailingAnchor.constraint(equalTo: view.trailingAnchor),
    	separator.topAnchor.constraint(equalTo: view.topAnchor)
])

Использование в SwiftUI:

Divider()
    	.frame(height: 1 / UIScreen.main.scale)
    	.background(Color.gray)

Вывод:
Учёт UIScreen.main.scale гарантирует, что линия будет ровно в один пиксель на любом устройстве.

  • Аватар

    iOS Guru

    Roman Isakov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    2

  • Сложность:

    7

Навыки

  • Swift

    Swift

Ключевые слова

#pixel

#separator

#scale

Подпишись на iOS Developer в телеграм

  • Аватар

    iOS Guru

    Roman Isakov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.