Создайте три столбца, используя язык визуального форматирования (Swift)
Я пытаюсь создать представление со следующим макетом, используя VFL (язык визуального форматирования)
------------------------------------------------- | [LeftView] [CenterView] [RightView] | -------------------------------------------------
Но это проявляется вот так
------------------------------------------------- | [LeftView] [RightView]| -------------------------------------------------
Я думаю, что проблема с этой линией
H:|-10-[cancel(70)]-[title]-[save(70)]-10-|
Вот остальная часть кода, я не знаю, что я делаю неправильно. Вот мой код:
let headerView = UIView(frame: CGRectMake(0,0,mainFrame.width, headerHeight))
headerView.backgroundColor = BG_COLOR
self.addSubview(headerView)
let cancelButton = UIButton(type: .Custom)
cancelButton.translatesAutoresizingMaskIntoConstraints = false
cancelButton.setTitle("Cancel", forState: .Normal)
cancelButton.addTarget(self, action: "cancelButtonClick:", forControlEvents: .TouchUpInside)
headerView.addSubview(cancelButton)
let titleLabel = UILabel()
titleLabel.text = "Bedroom"
titleLabel.textColor = UIColor.whiteColor()
headerView.addSubview(titleLabel)
let saveButton = UIButton(type: .Custom)
saveButton.titleLabel?.textAlignment = NSTextAlignment.Right
saveButton.translatesAutoresizingMaskIntoConstraints = false
saveButton.setTitle("Save", forState: .Normal)
saveButton.addTarget(self, action: "saveButtonClick:", forControlEvents: .TouchUpInside)
headerView.addSubview(saveButton)
let views = ["title":titleLabel, "cancel":cancelButton,"save":saveButton,"header":headerView]
headerView.addConstraints(
NSLayoutConstraint.constraintsWithVisualFormat(
"V:|[save]|",
options:[.AlignAllCenterY],
metrics:nil,
views:views)
)
headerView.addConstraints(
NSLayoutConstraint.constraintsWithVisualFormat(
"V:|[cancel]|",
options:[.AlignAllCenterY],
metrics:nil,
views:views)
)
headerView.addConstraints(
NSLayoutConstraint.constraintsWithVisualFormat(
"V:|[title]|",
options:[.AlignAllCenterY],
metrics:nil,
views:views)
)
headerView.addConstraints(
NSLayoutConstraint.constraintsWithVisualFormat(
"H:|-10-[cancel(70)]-[title]-[save(70)]-10-|",
options:[.AlignAllCenterY],
metrics:nil,
views:views)
)
1 ответ
Ваш код выглядит хорошо. Из явления, которое вы описываете, центральный вид не виден. Это может иметь несколько причин.
- У него нет контента.
- Вы устанавливаете
hidden
собственность где-то. - Вы установили
alpha
свойство к нулю. - Вы переопределяете макет в
layoutSubviews
, - Текст метки имеет тот же цвет, что и фон.
Как и многие другие причины... Во всяком случае, это не эта линия VFL.