[英]Mark a ball with a circular image layer- in iphone touch zoom or move
我有兩個圖像,一個網球和一個紅色標記圖像。 我需要將網球作為背景,並將紅色標記作為前景,就像在網球上的圖層一樣,並且需要根據網球的形狀調整紅色標記。 我必須通過捏和觸摸動作來實現這一目標。
以下是兩個圖像。
圖片1
圖片2(圖層):
最終圖像通過調整圓圈:
任何初學者都很好!!
有兩種方法(處理用戶觸摸):
touchesBegan:withEvent:
, touchesMoved:withEvent:
和touchesEnded:withEvent:
方法。 參考在這里: UIResponder-響應觸摸事件 。
如果您只需要移動紅色圓圈,而不需要調整它的大小-使用touches...
方法將很適合您。
但是,如果您想使用捏手勢來調整圓的大小,則可能需要創建自定義手勢識別器(並在其中實現相同的touches...
方法)來處理觸摸和移動。 並使用標准的UIPinchGestureRecognizer處理捏手勢。
您需要創建自定義的手勢識別,因為非標准UITapGestureRecognizer和UIPanGestureRecognizer有一些問題,因為它提到這里 。
UPD:
例如,您有UIViewController
。 您正在將UIImageView
添加到viewController的view
。 您正在創建具有清晰背景的UIView
並在其中繪制紅色圓圈,或者添加另一個帶有紅色圓圈的UIImageView
(如果有圖像的話)。 我們稱之為redCircleView
。
您可以使redCircleView
透明( redCircleView.alpha = 0
),也可以在用戶觸摸屏幕時對其進行初始化。 我認為第二種選擇更好,但是我不確定。
在您的UIViewController
您正在實現touchesBegan:withEvent:
方法,您可以在其中設置redCircleView.alpha = 1
或初始化此redCircleView
。
在touchesMoved:withEvent:
實現中,您可以使用UITouch:locationInView:
在任何視圖中獲取觸摸UITouch:locationInView:
(void) touchesMoved: (NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
CGPoint point = [touch locationInView:self.view];
.
.
.
}
然后,您可以更改redCircleView.center
(然后紅色圓圈的中心將在屏幕上跟隨手指),也可以存儲上一點的位置,將其與當前位置進行比較,然后移動redCircleView
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.