0

こんにちは、画像ビューの右隅にドラッグして、画像ビューのサイズを変更して回転させる必要があるという要件があります。

画像ビューの角をドラッグすることで画像ビューのサイズを変更できましたが、1 本の指で画像ビューのサイズ変更兼回転機能を実装しようとすると失敗しました。

私の要件を達成するために私を導いてください。

角の端から画像ビューのサイズを変更するために、以下のコードを追加しました。

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
UITouch *touch = [[event allTouches] anyObject];
touchStart = [[touches anyObject] locationInView:self];
isResizingLR = (self.bounds.size.width - touchStart.x < kResizeThumbSize && self.bounds.size.height - touchStart.y < kResizeThumbSize);
isResizingUL = (touchStart.x <kResizeThumbSize && touchStart.y <kResizeThumbSize);
isResizingUR = (self.bounds.size.width-touchStart.x < kResizeThumbSize && touchStart.y<kResizeThumbSize);
isResizingLL = (touchStart.x <kResizeThumbSize && self.bounds.size.height -touchStart.y <kResizeThumbSize);

}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
CGPoint touchPoint = [[touches anyObject] locationInView:self];
CGPoint previous=[[touches anyObject]previousLocationInView:self];

float  deltaWidth = touchPoint.x-previous.x;
float  deltaHeight = touchPoint.y-previous.y;

if (isResizingLR) {
    self.frame = CGRectMake(self.frame.origin.x, self.frame.origin.y,touchPoint.x + deltaWidth, touchPoint.y + deltaWidth);
}  
if (isResizingUL) {
    self.frame = CGRectMake(self.frame.origin.x + deltaWidth, self.frame.origin.y + deltaHeight, self.frame.size.width - deltaWidth, self.frame.size.height - deltaHeight);
} 
if (isResizingUR) {
    self.frame = CGRectMake(self.frame.origin.x ,self.frame.origin.y + deltaHeight,  self.frame.size.width + deltaWidth, self.frame.size.height - deltaHeight);      
} 
if (isResizingLL) {
    self.frame = CGRectMake(self.frame.origin.x + deltaWidth ,self.frame.origin.y ,  self.frame.size.width - deltaWidth, self.frame.size.height + deltaHeight);   
}

if (!isResizingUL && !isResizingLR && !isResizingUR && !isResizingLL) {
    self.center = CGPointMake(self.center.x + touchPoint.x - touchStart.x,self.center.y + touchPoint.y - touchStart.y);
}

}

4

2 に答える 2

1

こんにちは、UIImageViewこのコード サンプルでサイズを変更します

これを試して ...

それがあなたを助けることを願っています...

回転のためにこれを試してください...

self.imgViewForBend.layer.anchorPoint = CGPointMake(0.0,1.0);
self.imgViewForBend.layer.position = CGPointMake(200,300.0);
CGAffineTransform cgaRotateHr = CGAffineTransformMakeRotation(-(3.141/4));
[self.imgViewForBend setTransform:cgaRotateHr];
于 2012-09-24T11:37:54.023 に答える
0

コードがなければ、私はこのようなものを考えます...

タッチが始まると、編集中の画像の始点と中心点が保存されます。(画像のスーパービューに対するすべてのポイント)。

次に、スケールは中心点からのタッチの距離に相対的です (ピタゴラスを使用)。

また、中心点から元のタッチまでの線の角度がわかります (三角法を使用)。開始角度と現在の角度の差に基づいて、画像の角度を変更できます。

また、移動したタッチと開始したタッチからロジックを取り出します。calculateRotation 関数と calculateScale 関数を作成してください。

ただし、現時点ではコーディングできません。

于 2012-09-24T08:11:15.093 に答える