ios – Swift如何隐藏元素和他的空间

前端之家收集整理的这篇文章主要介绍了ios – Swift如何隐藏元素和他的空间前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我希望标题清楚.我想隐藏一个元素(在我的情况下是数据选择器),我也想隐藏他的空间.
所以我用动画尝试了这个:
@IBAction func showQnt(sender: AnyObject) {
    if (self.pickerQnt.alpha == 0.0){
        UIView.animateWithDuration(0.2,delay: 0.0,options: UIViewAnimationOptions.ShowHideTransitionViews,animations: {
            self.pickerQnt.alpha = 1.0


            },completion: {
                (finished: Bool) -> Void in
                //var constH = NSLayoutConstraint(item: self.pickerQnt,attribute: NSLayoutAttribute.Height,relatedBy: NSLayoutRelation.Equal,toItem: nil,attribute: NSLayoutAttribute.NotAnAttribute,multiplier: 1,constant: 162)
                //self.pickerQnt.addConstraint(constH)
        })
    } else {
        UIView.animateWithDuration(0.2,animations: {
            self.pickerQnt.alpha = 0.0


            },completion: {
            (finished: Bool) -> Void in
                // CHECK: ?!? constrain to set view height to 0 run time
                //var constH = NSLayoutConstraint(item: self.pickerQnt,constant: 0)
                //self.pickerQnt.addConstraint(constH)
        })
    }
}

我也尝试过类似的东西:

self.pickerQnt.hidden = true

但不会工作.

提前致谢.

解决方法

在Objective-C / Swift中使用 “hidden” property视图实际上不会“崩溃”视图所占用的空间(与 “View.GONE” in Android相反).

相反,您应该使用Autolayout和高度约束.

在Xib / Storyboard文件中创建高度约束.给它希望的高度.为该约束创建一个IBOutlet(从Constraints列表中的Constraint拖动到源文件),然后你可以编写这个方法

迅捷解决方

var pickerHeightVisible: CGFloat!
...
...
func togglePickerViewVisibility(animated: Bool = true) {
    if pickerHeightConstraint.constant != 0 {
        pickerHeightVisible = pickerHeightConstraint.constant
        pickerHeightConstraint.constant = 0
    } else {
        pickerHeightConstraint.constant = pickerHeightVisible
    }
    if animated {
         UIView.animateWithDuration(0.2,animations: {
              () -> Void in
               self.view.layoutIfNeeded()
         },completion: nil)
    } else {
         view.layoutIfNeeded()
    }
}

Objective-C解决方案:

@property (nonatomic,strong) CGFloat pickerHeightVisible;
...
...
- (void)togglePickerViewVisibility:(BOOL)animated {
    if(pickerHeightConstraint.constant != 0) {
        pickerHeightVisible = pickerHeightConstraint.constant;
        pickerHeightConstraint.constant = 0;
    } else {
        pickerHeightConstraint.constant = pickerHeightVisible;
    }
    if(animated) {
         [UIView animateWithDuration:0.2
             animations:(void (^)(void))animations:^(void) {
                  [self.view layoutIfNeeded];
             }];
    } else {
          [self.view layoutIfNeeded];
    }
}

免责声明:我没有测试或编译上面的代码,但它会让你知道如何实现它.

重要信息:上面的代码假定您在故事板/笔尖中为选取器视图的高度约束赋予大于0的值.

猜你在找的iOS相关文章