Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/100.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 隐藏UIButton,而不仅仅是删除可见性_Ios_Swift_Swift3_Uibutton - Fatal编程技术网

Ios 隐藏UIButton,而不仅仅是删除可见性

Ios 隐藏UIButton,而不仅仅是删除可见性,ios,swift,swift3,uibutton,Ios,Swift,Swift3,Uibutton,我想在swift 3应用程序中隐藏我的UIButton 目前我设置 cell.myButton.isHidden = true 这使得按钮不再可见,但按钮将占用的空间仍然被占用 我怎么能把按钮藏起来呢 我在tableViewCell中创建UIButton并使用SnapKit设置约束,我认为您可以使用setNeedsLayout调整tableViewCell中子视图的位置。在tableViewCell类中设置buttonHide属性时,还可以调用self.setNeedsLayout() 然后将

我想在swift 3应用程序中隐藏我的UIButton

目前我设置

cell.myButton.isHidden = true
这使得按钮不再可见,但按钮将占用的空间仍然被占用

我怎么能把按钮藏起来呢


我在tableViewCell中创建UIButton并使用SnapKit设置约束,我认为您可以使用
setNeedsLayout
调整tableViewCell中子视图的位置。在tableViewCell类中设置buttonHide属性时,还可以调用
self.setNeedsLayout()


然后将触发您的
viewDidLayoutSubview
,您应该在其中设置tableViewCell子视图的框架。

将该tableView行的高度设置为0怎么样?

试试看

cell.myButton.removeFromSuperview()

你有多种选择

您可以为按钮的高度和宽度添加约束,将其连接为插座,并将约束的常量设置为0。这将使他们零尺寸


如@AymanKarram的回答所示,您可以从它的superview中删除该按钮,但您需要保留对它的强引用,否则它将被释放。(作为测试,尝试删除
myButton
的@IBOutlet声明中的弱限定符。这将导致IBOutlet保留强引用。)

布局崩溃。如果您有与此按钮相关的其他项约束,请确保它会崩溃。您可以通过向这些与超级视图相关的相关项添加另一个约束来解决此问题。但它也会从表中它应该保留的元素中删除。如果要再次显示此按钮,请保留添加到其他项的新约束,并对按钮宽度设置约束,并将其设置为0以隐藏和单元格。layoutIfNeeded()设置其宽度值以再次显示单元格。layoutIfNeeded()我调用了cell.setNeedsLayout-但没有任何更改。@在tableViewCell类中,您需要重写
viewDidLayoutSubview
,并将所有子视图放在正确的位置(基于buttonHide属性的值)“我在tableView行中还有其他需要显示的元素。@develth如果将按钮的高度约束设置为0?如果您使用的是故事板约束,我会告诉您为高度约束创建一个出口,并在您想要隐藏按钮时将常量设置为0。但当您使用SnapKit时,也许您可以再次设置高度为0的按钮约束。我没有通过故事板创建视图,因此我没有任何@IBOutlets任何可能将项目保留在需要按钮的地方,并使用AymanKarram的答案?创建一个实例变量并将您的按钮保存在其中。实例变量将保留对按钮,这样当您从它的superview中移除按钮时,它不会被释放。