每当我使用pickerview将视图从“自动租用”切换到“计划租用”时,它都可以正常工作。当我从“计划租金”切换为“自动租金”时,会出现此黑条。我已经附加了内容视图的层次结构。我认为这与以前添加的约束有关,因此,只要选择了一个视图,便会删除StackView。例如,如果选择了“自动租用”,那么我将删除“计划”视图所在的StackView:
//Holds Temp Stackviews
var stackViewHolder1: UIView?
var stackViewHolder2: UIView?
override func viewDidLoad() {
super.viewDidLoad()
stackViewHolder1 = stackViewMain.arrangedSubviews[0]
stackViewHolder2 = stackViewMain.arrangedSubviews[1]
}
if txtRentType.text == "Auto Rent" {
let tempView = stackViewHolder1
let tempView1 = stackViewHolder2
tempView!.isHidden = true
stackViewMain.removeArrangedSubview(tempView!)
if(tempView1!.isHidden == true){
tempView1!.isHidden = false
stackViewMain.addArrangedSubview(tempView1!)
}
else{
let tempView = stackViewHolder1
let tempView1 = stackViewHolder2
tempView1!.isHidden = true
stackViewMain.removeArrangedSubview(tempView1!)
if(tempView!.isHidden == true){
tempView!.isHidden = false
stackViewMain.addArrangedSubview(tempView!)
}
}
我尝试删除一个视图并切换仅一个视图被隐藏,这消除了黑条问题。 stackViews和Content View没有限制。
突出显示的屏幕是scrollView。后一个是contentView。 UIWindow在背面变黑。
位于顶部的我的标题栏以某种方式终止于中间。
答案 0 :(得分:0)
您可以尝试修改堆栈分配属性
stack.distribution = .equalCentering
您将不需要使用它之后:
.removeArrangedSubview()
.addArrangedSubview()
当您隐藏某个视图时,另一视图占据了堆栈的所有空间,您无需更新约束。您可以在界面生成器上尝试一下,看看它如何工作。
答案 1 :(得分:0)
您是否将滚动视图和内容视图固定在约束的底部?
如果内容视图是堆栈视图,则可以将其固定在底部以及布局约束并使用内容分发。
答案 2 :(得分:0)
您不需要使用删除/添加已安排的子视图。
将视图隐藏在stackView中时,视图会自动删除。
所以我认为您可以隐藏或显示stackViewMain.subviews [0]或stackViewMain.subviews [1]
我与objc在一起也许是我做错了,但这可能是这样的:
if txtRentType.text == "Auto Rent" {
stackViewMain.arrangedSubviews[0].isHidden = true;
stackViewMain.arrangedSubviews[1].isHidden = false;
}else{
stackViewMain.arrangedSubviews[1].isHidden = true;
stackViewMain.arrangedSubviews[0].isHidden = false;
}