uiviewのコーナーのタッチを使用してuiviewのサイズを変更する方法。例えば、上の左隅がタッチされ、y座標が上にドラッグされ、下の右隅がドラッグされている場合は原点は同じである必要がありますが、高さと幅は変更する必要があります。隅からのビューのサイズ変更
2
A
答えて
4
view.layerのアンカーポイントを変更することでこれを行うことができます。
あなたがここでそれについて読むことができます。 Layer Geometry
はあなたが使用できるのUIViewの角を取得するには -
CGRect topLeftCorner = CGRectMake(CGRectGetMinX(self.view),CGRectGetMinY(self.view),20,20); //Will define the top-left corner of the view with 20 pixels inset. you can change the size as you wish.
CGRect topRightCorner = CGRectMake(CGRectGetMaxX(self.view),CGRectGetMinY(self.view),20,20); //Will define the top-right corner.
CGRect bottomRightCorner = CGRectMake(CGRectGetMinX(self.view),CGRectGetMaxY(self.view),20,20); //Will define the bottom-right corner.
CGRect bottomLeftCorner = CGRectMake(CGRectGetMinX(self.view),CGRectGetMinY(self.view),20,20); //Will define the bottom-left corner.
次にすることはでき頬タッチポイントはコーナーの1内にある場合。 layer.anchorPointを次のように設定します。
BOOL isBottomLeft = CGRectContainsPoint(bottomLeftCorner, point);
if(isLeft) view.layer.anchorPoint = CGPoint(0,0);
//And so on for the others (off course you can optimize this code but I wanted to make the explanation simple).
次に、ビューのサイズを変更すると、アンカーポイントからサイズが変更されます。
グッドラック
1
#define TOUCH_OFFSET 20 //distance from rectangle edge where it can be touched
UITouch* touch = [... current touch ...];
CGRect rectagle = [... our rectangle ... ];
CGPoint dragStart = [touch previousLocationInView:self.view];
CGPoint dragEnd = [touch locationInView:self.view];
//this branch is not necessary if we let users resize the rectangle when they tap its border from the outside
if (!CGRectContainsPoint(rectangle, dragStart)) {
return;
}
if (abs(dragStart.x - CGRectGetMinX(rectangle)) < TOUCH_OFFSET) {
//modify the rectangle appropiately, e.g.
rectangle.origin.x += (dragEnd.x - dragStart.x);
rectangle.size.width -= (dragEnd.x - dragStart.x);
//TODO: you have to handle situation when width is zero or negative - flipping the rectangle or giving it a minimum width
}
else if (abs(dragStart.x - CGRectGetMaxX(rectangle)) < TOUCH_OFFSET) {
}
if (abs(dragStart.y - CGRectGetMinY(rectangle)) < TOUCH_OFFSET) {
}
else if (abs(dragStart.y - CGRectGetMaxY(rectangle)) < TOUCH_OFFSET) {
}
+0
ありがとうございますが、どのようにコーナーからサイズを変更するには、移動したタッチの新しい座標になります。ドラッグの場合と同様にrect.orgin.x + =(end.x-start.x)と書いてあります。各コーナーのコードは何になりますか。 –
関連する問題
- 1. スクロールビューアのサイズ変更(右下隅)WPF
- 2. 子のサイズ変更イベントから親コントロールのサイズを変更
- 3. 描画前のビューのサイズ変更
- 4. OnLayoutChangeListenerでビューのサイズを変更する
- 5. フルスクリーン:親ビューのサイズ変更時にAVPlayerLayerのサイズが変更されない
- 6. オリエンテーションの変更に関するビューのサイズ変更
- 7. サイズ変更matlotlibのビュー境界を自動的に変更
- 8. ココアユーザー-サイズ変更可能なビュー
- 9. iphoneカメラからUIimageのサイズを変更
- 10. 他のスレッドからビューを変更
- 11. iOS Autolayout:サイズ変更の親ビューでのUILabelsの問題
- 12. 親ビュー内のデータを子ビューから変更IOS
- 13. iphone:デバイスを回転させたときのビューのサイズ変更
- 14. Rails_Admin - 投稿ビューのテキストフィールドのサイズを変更する方法
- 15. 2本の指で画像ビューのサイズを変更するiPhone
- 16. (iphone)autorotationは私のビューのサイズを変更しません
- 17. JScrollpane可変サイズのコンテンツでサイズ変更
- 18. サイズ変更UIFontサイズ
- 19. jQueryのUIのサイズ変更可能なファイアウィンドウのサイズ変更イベント
- 20. jqueryダイアログボックスのサイズを変更する際のコントロールのサイズ変更
- 21. UIKit:サブビューに対応するビューのサイズ変更
- 22. xcodeインターフェースビルダー - ビューのサイズ変更または移動
- 23. カスタムコンテナコントローラで回転後にビューのサイズが変更されない
- 24. プログラムでMFCでビューのサイズを変更する方法は?
- 25. uitabbarControllerビューのサイズが変更されない
- 26. インターフェイスビルダでビューのサイズを変更できません
- 27. MPMoviePlayerControllerビューのサイズが変更されない
- 28. Eclipseでビューのサイズ変更を検出する方法
- 29. サイズ変更のiFrame
- 30. タブページのサイズ変更
私はタッチで上記の行が始まると、プログラムを実行しますが、私は触れると、そのポイントをドラッグすると何も起こりません書きました。 –
ビューのサイズを変更するにはどうすればいいですか? 4つのコーナーすべてで同じサイズ変更方法ですか? –