Центрирование UIImage (по горизонтали или вертикали) с программными ограничениями UIKit - PullRequest
0 голосов
/ 21 мая 2018

Я пытаюсь просто центрировать изображение 5x5 в горизонтальной строке в UIKit.

Слева от вида у меня есть UIView, у которого его левые и верхние поля прикреплены к родительскому представлению и имеют встроенныйширина и высота.Возможно, он не полностью заполняет половину содержащего представления (поэтому предположим, что его ширина произвольна).

Справа от него (но в той же строке) я пытаюсь поместить UIImage с центром в пробелпространство справа от левого объекта.Это означает, что он центрирован как по горизонтали, так и по вертикали, но справа от другого объекта.

Я действительно понятия не имею, как этого добиться, хотя я полагаю, что есть и более, и менее изящные способы достижения этого.

enter image description here

Ответы [ 2 ]

0 голосов
/ 21 мая 2018

Все довольно просто.Вы будете использовать руководство по макету, чтобы определить начало и конец горизонтального пространства.Затем вы сосредоточите свой взгляд в центре направляющих.Я включил layoutMarginsGuide, который можно настроить, установив container.layoutMargins.

let containerView = UIView()
containerView.backgroundColor = .gray
// Add view to parent ...

let greenView = UIView()
greenView.translatesAutoresizingMaskIntoConstraints = false
greenView.backgroundColor = .green
containerView.addSubview(greenView)
greenView.topAnchor.constraint(equalTo: containerView.layoutMarginsGuide.topAnchor).isActive = true
greenView.leadingAnchor.constraint(equalTo: containerView.layoutMarginsGuide.leadingAnchor).isActive = true

let horizontalGuide = UILayoutGuide()
containerView.addLayoutGuide(horizontalGuide)
horizontalGuide.leadingAnchor.constraint(equalTo: greenView.trailingAnchor, constant: containerView.layoutMargins.left).isActive = true
horizontalGuide.trailingAnchor.constraint(equalTo: containerView.layoutMarginsGuide.trailingAnchor).isActive = true

let imageView = UIImageView()
imageView.translatesAutoresizingMaskIntoConstraints = false
imageView.backgroundColor = .red
containerView.addSubview(imageView)
imageView.centerXAnchor.constraint(equalTo: horizontalGuide.centerXAnchor).isActive = true
imageView.centerYAnchor.constraint(equalTo: greenView.centerYAnchor).isActive = true
0 голосов
/ 21 мая 2018

После того, как вы установили правильную ширину и высоту, установите эти ограничения

smallView.centerYAnchor.constraint(equalTo: greenView.centerYAnchor).isActive = true
smallView.centerXAnchor.constraint(equalTo: parentView.centerXAnchor, multiplier:1.5).isActive = true
...