替换 UIStackView 中的视图
Posted
技术标签:
【中文标题】替换 UIStackView 中的视图【英文标题】:Replace view inside UIStackView 【发布时间】:2018-07-29 23:34:42 【问题描述】:我有一个UIStackView
,里面有 5 个按钮。其中一个按钮 (#4) 需要在单击后替换为 UIPickerView
,并在选择其他四个按钮之一后切换回 UIButton
。
UIStackView
水平,对齐方式填充,分布按比例填充。
堆栈是使用 storyboard 完成的,我正在尝试将视图替换为:
override func viewDidLayoutSubviews()
self.pickerView.frame.origin = self.view.viewWithTag(40)!.frame.origin
self.pickerView.frame.size = CGSize(width: 30, height: 30)
但是我的UIStackView
在按钮点击后不会重新排列,并且按钮#5停留在UIPickerView
的顶部。
有什么想法吗?
【问题讨论】:
如果您想在按下按钮后更改内容,请在按钮的目标/选择器中进行。您需要删除排列的子视图并将排列的子视图插入堆栈视图。不要硬编码框架/大小。请阅读 UIStackView 文档 【参考方案1】:好的,我找到了代码。我不得不将addView
替换为addArrangedSubview
。
最终代码(按下按钮时):
let stack = (self.view.viewWithTag(20) as! UIStackView)
stack.addArrangedSubview(self.pickerView)
【讨论】:
以上是关于替换 UIStackView 中的视图的主要内容,如果未能解决你的问题,请参考以下文章
UIStackView 和另一个 UIStackView 问题中的占位符视图