如何使UITextView扩展到UIImageVIew

时间:2017-05-11 00:47:09

标签: ios swift uiimageview uitextview

我有一个UIImageView和一个UITextView。当点击UITextView时,我需要UITextView扩展UIImageView。我不知道该怎么做。

从此before expansion

after expansion

3 个答案:

答案 0 :(得分:0)

您可以按照以下步骤操作:

  • 在视图控制器布局(故事板或代码)中,确保将UIImageView放在UITextView下。
  • 在处理UITextView点击事件的IBAction中,只需将其帧高更新为与控制器高度相等即可。 (如截图所示)。

    //更新视图框架的几种方法之一
        textView.frame = CGRect(x:0,y:0,width:self.view.frame.width,height:self.view.frame.height)

您可以在此处找到更新UITextView大小的其他方法:How do I change UIView Size?

答案 1 :(得分:0)

您也可以使用constraint执行此操作。您只需更改ActionUITapGesture的{​​{1}}中特定UITextView的{​​{1}}值即可。您可以更改Constraints的{​​{1}} Top的{​​{1}}和TextView的{​​{1}}。试试这个!!

答案 2 :(得分:0)

因此,您尝试使用点按手势更新UIView的高度。您需要以下IBOutlets

  • NSLayoutConstraint
  • 一个CGFloat变量来更新它 可以从您的视图控制器到达以改变您的 NSLayoutConstraint常量
  • A UITapGestureRecognizer

此外,您的UIImageView将需要落后于其他视图。您只需将其拖到Interface Builder中的View层次结构的顶部即可。顶视图位于层次结构的后面:

enter image description here

这里是:

为视图创建IBOutlet s以及要设置动画的UIView的高度:

@IBOutlet weak var bioView: UIView!
@IBOutlet weak var bioViewHeightConstraint: NSLayoutConstraint!

这只是故事板的参考。如果您想要更改bioViewHeightConstraint,则需要访问其常量。因此声明一个变量:

var bioViewHeight: CGFloat! {
    /*
     Here we're using a property observer to execute code whenever
     this value is updated
     */

    didSet {
        print("stackViewHeight updated to \(bioViewHeight)")
        UIView.animate(withDuration: 0.5, delay: 0.0, options: [.curveEaseIn], animations: { 
            self.bioViewHeightConstraint.constant = self.bioViewHeight
            self.view.layoutIfNeeded()
        }) { _ in
            self.bioTextView.scrollRangeToVisible(NSRange(location: 0, length: 0))
            print("animation complete")
        }
    }
}

您将看到我在didSet中添加了一些动画代码。因此,每当您更改bioViewHeight时,bioViewHeightConstraint.constant都会更新。

接下来,我们使用以下代码配置UITapGestureRecognizer

    let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(toggleHeight(sender:)))
    tapGestureRecognizer.numberOfTapsRequired = 1
    bioView.addGestureRecognizer(tapGestureRecognizer)

点击手势代码位于viewDidLoad

接下来,我们必须为您的水龙头编写处理程序。这是代码:

func toggleHeight(sender: UITapGestureRecognizer) {
    if bioViewHeightConstraint.constant == UIScreen.main.bounds.height / 2 {
        // true
        bioViewHeight = UIScreen.main.bounds.height - 30 // gives space for status bar
    } else {
        // false
        bioViewHeight = UIScreen.main.bounds.height / 2
    }
}

这是可以做你正在尝试做的事情的基本代码。这是指向repo的完整代码的链接。