2011-08-10 8 views
1

これはおそらく簡単な質問です。可能かどうかはわかりません。簡単なことではありません。幅と原点を調整するのではなく、UIViewの伸縮側

Screen  = 0x 0y 1000w 1000h 
UIView Start = 500x 0y 500w 1000h 
UIView End = 0x 0y 1000w 1000h 

私は、上記の寸法と座標で画面の右側を覆うようにUIViewを表示させることができます。今私は

CGRectMake(start.origin.x - 500, start.origin.y, start.size.width + 500, start.size.height) 

をしなければならないエンドポイントを取得するために知っていることは可能であるだけで何か

[uiview stretchLeftSide:500]; 

のような私は、原点に触れたり、直接幅にする必要はありません。そのようにすることができません。ビューにはアンカーを管理できないコントロールが含まれているため、指定された場所にジャンプし、ビューが調整されます(これはすべてアニメーション化されたBTWです)。

答えて

0

CGRectMake(start.origin.x - 500, start.origin.y, start.size.width + 500, start.size.height)私はこの方法でUIViewをサイズ変更&サイズを変更することを知っている限り、それを行う方法です。

これは醜いですが、それは私がしなければならなかったことです。しかし、UIViewを継承し、メソッドstretchLeftSideを追加して、必要なものを実装することができます。長い実行中のプロジェクトでは、これは絶対的な意味があると、私は仮定してい

+0

ありがとう。実際のストレッチをどうやってやるの?私が言ったように、私は左サイド以外のものやコントロールがうまくいけません。私はそれをやる方法を考えることができません。 forループや何かではないので、私はビューを移動し、コントロールを少しジャンプさせるように少しずつ幅を増やします。しかし、私は本当にそれをしたくないです。 – LOST

+0

、またはそれについて考えるだけで、uibarbuttonitemsのアンカープロパティを設定することは可能ですか?彼らは問題を与えるものです。 – LOST

0

まず...の練習として行われるべきであるあなたのUIViewScreenのサブビューがある(ちょうどそれを見ると呼びましょう)(つまり、あなたのやった[Screen addSubview:view]のようなもの) 。

あなたは左側はあなたが望む方法を伸ばしてアニメーションを行いたい場合は、基本的には、すべてあなたがしなければならない(0,0)viewの起源を設定されており、サイズはScreenと同じになるように。このためにはScreen.boundsを使用することができます。これは最終フレームのviewを正確にしたいものです。ビューのboundsプロパティは、常に(0,0)の起点とビューのサイズに等しいサイズを持ちます。

あなたはScreenへの参照を持っている場合、私は上記のように、あなたはScreen.boundsを使用することができますが、そうでないと、あなたはviewScreenのサブビューであることがわかっている場合、あなたはview.superview.boundsを使用することができます。

アニメーションが完成しました。 3.0以前のバージョンのiOSをサポートするアプリケーションを作成する必要があるため、ブロックアニメーションを使用することはできません。代わりに、私はこのようなUIViewクラスメソッドを使用します:

// Here you can enter an identifier to identify your animation 
// and an object that will be passed to your delegate. 
// These 2 parameters are only useful if you set an animation delegate 
// using [UIView setAnimationDelegate:delegate]; 
[UIView beginAnimations:nil context:nil]; 

// Duration in seconds  
[UIView setAnimationDuration:0.5]; 

// Perform you changes here. 
view.frame = view.superview.bounds; 

// Commit the changes 
[UIView commitAnimations]; 
関連する問題