Я пытаюсь выровнять элементы в UIStackview по горизонтали слева.
Есть ли способ сделать это программно? Я пытался сделать это с помощью раскадровки, но безуспешно. По какой-то причине элементы в UIStackView центрируются сами по себе.
Я пытаюсь выровнять элементы в UIStackview по горизонтали слева.
Есть ли способ сделать это программно? Я пытался сделать это с помощью раскадровки, но безуспешно. По какой-то причине элементы в UIStackView центрируются сами по себе.
Если вы используете для свойства оси StackView значение «Горизонтально», я думаю, вы не сможете выровнять его по левому краю.
Но есть способ сделать его левым визуально.
как это
stackView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
stackView.trailingAnchor.constraint(greaterThanOrEqualTo: view.trailingAnchor).isActive = true
Попробуйте добавить одно представление пространства в представление стека, например
// To Make Our Buttons aligned to left We have added one spacer view
UIButton *spacerButton = [[UIButton alloc] init];
[spacerButton setContentHuggingPriority:UILayoutPriorityFittingSizeLevel forAxis:UILayoutConstraintAxisHorizontal];
[spacerButton setContentCompressionResistancePriority:UILayoutPriorityFittingSizeLevel forAxis:UILayoutConstraintAxisHorizontal];
[self.buttonsStackView addArrangedSubview:spacerButton];
И сделать
self.buttonsStackView.distribution = UIStackViewDistributionFill;
Тестирование Swift 4.2 + iOS 12.1:
let stackView: UIStackView = UIStackView(frame: .zero)
stackView.translatesAutoresizingMaskIntoConstraints = false
stackView.axis = .vertical
stackView.alignment = .leading // <- aligns each of your items to the left.
// further setup + setup constraints
// ...
leading
недоступно при настройке в раскадровке?
- person Hemang; 04.12.2019
Используйте свойство UIStackView.alignment
.
Ссылка: https://developer.apple.com/reference/uikit/uistackview/1616243-alignment
Спасибо за совет, ребята. Я пытался играть с параметрами в UIStackView.alignment, но это никогда не работало так, как хотелось бы. В конце концов я напортачил с шириной UIStackView, чтобы добиться желаемых результатов.
if(prdDTO.getShellIcn() == "Y")
{
let icon = UIImageView()
icon.contentMode = UIViewContentMode.scaleAspectFit
icon.image = #imageLiteral(resourceName: "Shellfish")
prdIngredients.addArrangedSubview(icon)
stackviewWidth += 25
}
if(prdDTO.getVegeIcn() == "Y")
{
let icon = UIImageView()
icon.contentMode = UIViewContentMode.scaleAspectFit
icon.image = #imageLiteral(resourceName: "Vege")
prdIngredients.addArrangedSubview(icon)
stackviewWidth += 25
}
if(prdDTO.getSpicyIcn() == "Y")
{
let icon = UIImageView()
icon.contentMode = UIViewContentMode.scaleAspectFit
icon.image = #imageLiteral(resourceName: "Spicy")
prdIngredients.addArrangedSubview(icon)
stackviewWidth += 25
}
prdIngredients.widthAnchor.constraint(equalToConstant: CGFloat(stackviewWidth))
Attributes Inspector
Trailing
в раскрывающемся меню, когда выбрано Alignment
.UIStackView.alignment
при инициализации.