[英]Question about changing height of UIView when button is pressed in Swift
我正在制作 function ,当按下按钮时 UIView 的高度会增加和减少。
当 UIView 的高度减小时,该值在 storyboard 中创建了一个布局,当 UIView 的高度增加时,该值将是 UITextView 的高度。
上图是UIView拉伸前的图。 按照片底部的按钮拉伸 UIView
上图是UIView拉伸后的图。 如果按下上图底部的按钮,UIView 会再次收缩。
我首先好奇的是使 UIView 的高度增加的代码。
@IBOutlet weak var bookInfoView: UIView!
@IBOutlet weak var bookInfoVieweBtn: UIButton!
@IBOutlet weak var bookInfoTextView: UITextView!
@IBAction func bookInfoViewBtnTapped(_ sender: Any) {
print("##bookInfoViewBtnTapped!")
let f = bookInfoView.frame
let textView = bookInfoTextView.frame
bookInfoView.frame = CGRect(x: f.origin.x, y: f.origin.y, width: f.width, height: textView.height)
}
如果您使用上面的代码按下按钮,它什么也不做。 我应该怎么办?
请按照以下步骤操作:-
然后按下按钮,增加/减少 textview 的高度,例如:-
textViewHeightConstant.constant = someValue
1.为您尝试扩展的视图的高度设置一些默认值。 然后,如果您使用 StoryBoard 为您的 ViewConroller 创建一个 IBOutlet,并删除弱引用(那是因为我们将停用高度锚,如果它很弱并且您停用它, ARC将取消分配它。如果您要它以编程方式将高度锚点存储在局部变量中。所以它应该像这样:
@IBOutlet var yourViewHeightAnchor: NSLayoutConstraint!
2. 将目标添加到您的按钮,或者如果您使用 StoryBoard 或 Xib 将 IBAction 拖动到您的 ViewController。 单击按钮时,您唯一的工作是停用/激活高度锚。 (激活将服务于崩溃)
@IBAction func expandClicked(_ sender: Any) {
yourViewHeightAnchor.isActive.toggle()
}
如果您希望使用一些 animation 进行展开/折叠,您的expandClicked
function 应该如下所示:
@IBAction func expandClicked(_ sender: Any) {
UIView.animate(withDuration: 0.6, animations: {
self.yourViewHeightAnchor.isActive.toggle()
self.view.layoutIfNeeded()
})
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.