2017-05-11 21 views
1

私はUIImageViewとUITextViewを持っています。私は、UITextViewがタップされたときにUIImageViewで展開するために、UITextViewが必要です。私はこれを行う方法がわかりません。あなたが手順の下に従うことができます。このafter expansionUIImageVIewでUITextViewを展開するにはどうすればいいですか?

+0

もう少しお伝えできますか? UIImageViewを拡張するとどういう意味ですか?同じポイントとサイズにしたいですか? –

+0

コンテキストの画像を追加しました –

+1

自動レイアウトを使用していますか?テキストビューとイメージビューをメインビューにどのように添付しましたか?あなたはいくつかの詳細とこれを伝えることができますか?プログラマチックに、またはストーリーボードまたはxibファイルでサブビューを作成して追加しましたか? –

答えて

0

これで、タップジェスチャーでUIViewの高さを更新しようとしています。あなたは必要がありますIBOutlets

  • NSLayoutConstraint
  • CGFloat変数を使用すると、 あなた NSLayoutConstraintの定数
  • UITapGestureRecognizer
を変えるためにあなたのビューコントローラから到達できること、それを更新します

さらに、UIImageViewは他のビューの背後にある必要があります。 Interface Builderのビュー階層の一番上にドラッグすることができます。

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が更新されます。

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

タップジェスチャーコードがviewDidLoadに行く:

次に、我々は次のコードでUITapGestureRecognizerを設定します。

次に、タップ用のハンドラを記述する必要があります。そのコードは次のとおりです。

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へのリンクがあります。

+0

ありがとう私は見てみましょう。私は似たようなものを実装しましたが、あなたのものほどうまくはありません。 –

+0

ありがとう、それは素晴らしい作品!私はその青い線をどのように追加して、ビューが上がったり下ったりするのかを知ることができますか? –

+0

長方形以外のビューを作成することは一度もありませんでしたが、矩形以外のビューはすばやくグーグルにしたいと思っています。上の線は青色の境界線にすぎないと思います。 – Adrian

0

するために、このbefore expansion

から

  • あなたのビューコントローラのレイアウト(ストーリーボードまたはコード)では、あなたはUITextViewの下にUIImageViewを置くことを確認してください。
  • UITextViewタップイベントを処理するIBActionでは、フレームの高さをコントローラの高さと同じに更新するだけです。 (スクリーンショットに見られるように)。

    //ビューフレームを更新するいくつかの方法の1つ
    textView.frame = CGRect(x:0、y:0、width:self.view.frame.width、height:self.view.frame.height )

あなたはここにUITextViewのサイズを更新するために他の方法を見つけることができます:How do I change UIView Size?

0

あなたはConstrainsでそれをも行うことができます。あなたはUITextView。あなたにUITapGestureActionに特定constraintconstant値を変更する必要があるのはTextView .TryこのTextViewTopConstraintsheightを変更することができます!

+0

downVoteの理由を知っていますか? –

関連する問題