2013-08-25 3 views
6

タイトルがちょっと混乱していると私は理解しています。私は100の固定幅と0から始まる可変の高さを持つUIViewを持っています。私ができることをしたいのは、UIViewの基底から画面の上に向かって指をドラッグし、UIViewその高さを変えたり、私の指の位置に伸びたりします。それでも複雑なのであれば、何かの下から引き出された紙切れを想像してみてください。フィンガードラッグに反応してUIViewの高さを変更

お手伝いできれば、本当に素晴らしいでしょう。私はそれがあまりにも難しいとは思わないが、私は初心者であり、私はそれをうまく説明していないかどうか理解することができます!

+0

私はビューを常にフルハイトにしますが、ビューの内側には高さの変更があるCALayerがあります。 –

+0

どうすればそれをやりますか? – user2397282

+0

ジェスチャー認識機能を見ましたか? – Wain

答えて

9

これは、UIPanGestureRecognizerと少数の計算では簡単です。スーパービューのためにあなたのinit方法に

UIPanGestureRecognizer * pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(pan:)]; 
pan.maximumNumberOfTouches = pan.minimumNumberOfTouches = 1; 
[self addGestureRecognizer:pan]; 

を、およびメソッドを定義:正しいフレーム(私は名前_viewToChangeを使用して、これ以降のビューでそれを置き換えています)にビューを変更するには、単純に追加します。

- (void)pan:(UIPanGestureRecognizer *)aPan; { 
    CGPoint currentPoint = [aPan locationInView:self]; 

    [UIView animateWithDuration:0.01f 
        animations:^{ 
        CGRect oldFrame = _viewToChange.frame; 
        _viewToChange.frame = CGRectMake(oldFrame.origin.x, currentPoint.y, oldFrame.size.width, ([UIScreen mainScreen].bounds.size.height - currentPoint.y)); 
        }]; 
} 

これは、ユーザーの指の動きに合わせてビューをアニメートする必要があります。それが助けてくれることを願って!

+0

それは動作します、ありがとう!ビューの高さに最大値と最小値を追加する方法を知っていますか? – user2397282

+0

また、もう少し問題があります。コードは機能しますが、画面に触れる場所に関係なく機能します。私はこれらの3つを持っているので、これは少し問題です。それを変更できる方法はありますか?それはあなたがそれに触れているときに特定の視点のためだけに働くのですか? – user2397282

+0

最大と最小は簡単です。重要なのは 'currentPoint.y'だけです。 'currentPoint.y'が(' MAX'と 'MIN'関数を使用して)ある間隔内にあることを確認すると、望ましい結果が得られます。 選択したいビューについては、単に 'currentPoint.x'を見て、それがどこにあるのか把握してください。左(画面幅の1/3未満)の場合は、最初のビューを使用します。それが真ん中にある場合は、2番目のビューなどを使用してください。 – msgambel

関連する問題