当我的UIStackView"行"被压扁时,它们会AutoLayout发出警告.但是,它们显示正常,除了这些类型的记录之外别无其他错误:
无法同时满足约束.可能至少下列列表中的一个约束是您不想要的约束.试试这个:(1)看看每个约束并试着找出你不期望的东西; (2)找到添加了不需要的约束或约束的代码并修复它.(注意:如果您发现
NSAutoresizingMaskLayoutConstraints自己不明白,请参阅该UIView物业的文件translatesAutoresizingMaskIntoConstraints)(
所以,我不知道如何解决这个问题,但它似乎并没有破坏任何东西,除了烦恼.
有谁知道如何解决它?有趣的是,布局约束经常使用"UISV隐藏"进行标记,这表明它可能应该忽略子视图的高度最小值或者此实例中的某些内容?
在iOS 11中,隐藏动画在a中的行为UIStackView已发生变化,但我无法在任何地方找到此文档.
iOS 10
iOS 11
两者中的代码是这样的:
UIView.animate(withDuration: DiscoverHeaderView.animationDuration,
delay: 0.0,
usingSpringWithDamping: 0.9,
initialSpringVelocity: 1,
options: [],
animations: {
clear.isHidden = hideClear
useMyLocation.isHidden = hideLocation
},
completion: nil)
Run Code Online (Sandbox Code Playgroud)
如何在iOS 11上恢复以前的行为?
我有一个复杂的视图层次结构,内置在Interface Builder中,具有嵌套的UIStackViews.每次隐藏一些内部堆栈视图时,我都会收到"不满意的约束"通知.我跟踪到了这个:
(
"<NSLayoutConstraint:0x1396632d0 'UISV-canvas-connection' UIStackView:0x1392c5020.top == UILabel:0x13960cd30'Also available on iBooks'.top>",
"<NSLayoutConstraint:0x139663470 'UISV-canvas-connection' V:[UIButton:0x139554f80]-(0)-| (Names: '|':UIStackView:0x1392c5020 )>",
"<NSLayoutConstraint:0x139552350 'UISV-hiding' V:[UIStackView:0x1392c5020(0)]>",
"<NSLayoutConstraint:0x139663890 'UISV-spacing' V:[UILabel:0x13960cd30'Also available on iBooks']-(8)-[UIButton:0x139554f80]>"
)
Run Code Online (Sandbox Code Playgroud)
具体来说,UISV-spacing约束:当隐藏UIStackView时,它的高约束得到一个0常量,但这似乎与内部stackview的间距约束发生冲突:它需要我的Label和Button之间有8个点,这与隐藏约束是不可调和的,因此约束崩溃.
有没有解决的办法?我已经尝试递归隐藏隐藏堆栈视图的所有内部StackViews,但这导致奇怪的动画,其中内容浮出屏幕,并导致严重的FPS下降启动,同时仍然没有解决问题.