Нативная разработка мобильных приложений


Вложение представлений друг в друга



Download 3,69 Mb.
Pdf ko'rish
bet41/228
Sana21.07.2022
Hajmi3,69 Mb.
#834838
1   ...   37   38   39   40   41   42   43   44   ...   228
Bog'liq
Нативная разработка мобильных приложений

Вложение представлений друг в друга
Представления могут создаваться и добавляться в представления, которые 
сами находятся внутри других представлений, которые, в свою очередь, на
-
ходятся в третьих представлениях, и т. д. – до самого верхнего 
UIView
! Давай
-
те создадим представление и добавим его как дочерний компонент в другое 
представление.
Следующий код создает родительское и дочернее представления, а затем 
вызывает 
addSubview(_:)
, чтобы добавить дочернее представление в массив 
вложенных в родителе:
let parentView = UIView(frame: .zero)
let childView = UIView(frame: .zero)
parentView.addSubview(childView)
Многопоточное окружение
Используете разные потоки выполнения? Будьте осторожны! Операции с представления­
ми должны выполняться только в основном потоке. Для выполнения действий с пред
-
ставлениями в асинхронных операциях лучше всего использовать Grand Central Dispatch 
(GCD)
:
DispatchQueue.main.async {
// Здесь выполняются действия с представлениями
}
Более подробную информацию по этой теме вы найдете в главе 8.
Мы добавили представление, а теперь удалим его! Опираясь на пример 
выше, вот как можно заставить дочернее представление удалить себя из ро
-
дителя:
childView.removeFromSuperview()


54

Представления
Ограничения
Рано или поздно у вас неизбежно появится необходимость организовать ав
-
томатическое изменение размера представления. Обычно для этих целей ис
-
пользуется набор ограничений, определяющих размеры относительно другого 
представления. Допустим, у нас есть кнопка – особый вид представления, спо
-
собный принимать события, – и нам нужно поместить в 100pt ниже верхнего 
края экрана и растянуть по ширине так, чтобы левый и правый края кнопки 
находились в 16pt от соответствующего края экрана. Реализовать это в коде 
можно с помощью ограничений, например:
class ExampleViewController: UIViewController {
// Настраивает кнопку после загрузки представления
override func viewDidLoad() {
super.viewDidLoad()
setupButton()
}
// Это фактический метод настройки кнопки
func setupButton() {
// Создать кнопку
let button = UIButton(frame: .zero)
button.translatesAutoresizingMaskIntoConstraints = false
// Определить цвет фона кнопки
button.backgroundColor = .blue
// Добавить кнопку в родительское представление 
view.addSubview(button)
// Задать расстояние до верхнего края представления
button.topAnchor.constraint(equalTo: view.topAnchor, constant: 100.0)
.isActive = true
// Задать расстояние до левого края представления
button.leadingAnchor
.constraint(equalTo: view.leadingAnchor, constant: 16.0)
.isActive = true
// Задать расстояние до правого края представления
button.trailingAnchor
.constraint(equalTo: view.trailingAnchor, constant: -16.0)
.isActive = true
}
}
Рассмотрим поближе происходящее здесь. Во-первых, мы определили класс 
ExampleViewController
контроллера представления для кнопки; это подкласс 
UIV­
iewController
, и, как всякий контроллер представления, он хранит ссылку на 
свое представление в свойстве 
view
. Мы добавили в класс метод 
setupButton()

который вызывается после загрузки представления. Внутри 
setupButton()
мы 
создаем экземпляр кнопки с пустым кадром и присваиваем ее свойству 
trans­
latesAutoresizingMaskIntoConstraints
значение 
false
.
Глядя на установленные ограничения, можно заметить, что мы ссылаемся 
на верхний якорь (то есть на верхний край) кнопки и размещаем его в 100pt 


iOS 

55
от верхнего якоря родительского представления. То же самое мы проделываем 
с передним (
leadingAnchor
) и задним (
trailingAnchor
) якорями, но устанавливаем 
расстояние, равное 
16.0
.
Если запустить этот код, появится представление, как показано на рис. 2.1.

Download 3,69 Mb.

Do'stlaringiz bilan baham:
1   ...   37   38   39   40   41   42   43   44   ...   228




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish