sci*_*fic 8 hidden android uiviewcontroller ios autolayout
有没有相当于Android View.GONE的iOS?
在Android中,将视图设置为GONE将使其不可见,并确保视图不会占用布局中的任何空间.我知道在iOS中,你可以设置一个隐藏的视图
[viewName setHidden:true];
Run Code Online (Sandbox Code Playgroud)
但是视图仍然占用了布局中的空间,我认为完全删除视图并在以后重新创建它是没有效率的.
(注意:我看过这篇文章:iOS相当于Android View.GONE可见性模式,但是没有接受的答案,并且将高度设置为0对我来说不起作用,因为页面上的后续视图在我之后没有移动视图已删除)
使用constant= 0 添加宽度/高度约束your View将使your View宽度和高度= 0(像它一样GONE)
// set the height constraint to 0
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:theGoneView
attribute:NSLayoutAttributeHeight
relatedBy:NSLayoutRelationEqual
toItem:nil
attribute:NSLayoutAttributeNotAnAttribute
multiplier:1.0
constant:0]];
// set the width constraint to 0
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:theGoneView
attribute:NSLayoutAttributeWidth
relatedBy:NSLayoutRelationEqual
toItem:nil
attribute:NSLayoutAttributeNotAnAttribute
multiplier:1.0
constant:0]];
Run Code Online (Sandbox Code Playgroud)
在斯威夫特
// set the width constraint to 0
let widthConstraint = NSLayoutConstraint(item: theGoneView, attribute: NSLayoutAttribute.Width, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1, constant: 0)
view.addConstraint(widthConstraint)
// set the height constraint to 0
let heightConstraint = NSLayoutConstraint(item: theGoneView, attribute: NSLayoutAttribute.Height, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1, constant: 0)
view.addConstraint(heightConstraint)
Run Code Online (Sandbox Code Playgroud)
或者这个UIView扩展
extension UIView {
func goAway() {
// set the width constraint to 0
let widthConstraint = NSLayoutConstraint(item: self, attribute: NSLayoutAttribute.width, relatedBy: NSLayoutRelation.equal, toItem: nil, attribute: NSLayoutAttribute.notAnAttribute, multiplier: 1, constant: 0)
superview!.addConstraint(widthConstraint)
// set the height constraint to 0
let heightConstraint = NSLayoutConstraint(item: self, attribute: NSLayoutAttribute.height, relatedBy: NSLayoutRelation.equal, toItem: nil, attribute: NSLayoutAttribute.notAnAttribute, multiplier: 1, constant: 0)
superview!.addConstraint(heightConstraint)
}
}
Run Code Online (Sandbox Code Playgroud)
希望这有帮助
AFAIK 只有可能的等价物:
[yourView removeFromSuperview]
Run Code Online (Sandbox Code Playgroud)
直到您view从superview其中删除ios否则它将占用布局中的空间。
因此,根据您的需要,您可以在需要时添加或删除视图(与android中的view.GONE相同)。
| 归档时间: |
|
| 查看次数: |
7294 次 |
| 最近记录: |