我目前能夠使用Apple提供的縮放手勢識別器縮放圖像縮放比例,但是如何限制圖像的最大縮放比例?限制在iOS中使用縮放手勢縮放圖像的最大縮放比例
我一直在使用Apple的SimpleGestureRecognizers sample,它將scale設置爲1,並且使得縮放圖像變得非常容易,但是當我刪除它時,它會突然跳躍,這並不好。但是,自始終設置爲1以來很難追蹤比例。
在此先感謝您。
我目前能夠使用Apple提供的縮放手勢識別器縮放圖像縮放比例,但是如何限制圖像的最大縮放比例?限制在iOS中使用縮放手勢縮放圖像的最大縮放比例
我一直在使用Apple的SimpleGestureRecognizers sample,它將scale設置爲1,並且使得縮放圖像變得非常容易,但是當我刪除它時,它會突然跳躍,這並不好。但是,自始終設置爲1以來很難追蹤比例。
在此先感謝您。
的UIKit會打電話給你的選擇方法,多次爲單個用戶手勢(捏)。每個電話都代表着規模小的增量(或減少)。如果您處理每個方法的調用,併爲每個小增量相應地縮放圖像,您將獲得平滑的動畫。
您使用識別器的scale屬性來修改圖像。然後,將該屬性重置爲1.0,以便下次調用選擇器方法時,scale屬性僅表示自上一次以來的新增小增量。您再次通過新的小增量重新縮放圖像,並重置爲1.0。如果您不重置識別器的比例尺並使用它重新縮放圖像,則會通過累積更改來縮放圖像,導致跳動行爲(並且縮放比例不正確)。
因此,請確保將手勢識別器的比例重置爲1.要跟蹤比例的總變化,可以爲您的UIImageView或ViewController創建一個實例變量,也可能稱爲「比例」。 (事實上,如果您在drawRect中使用了新的縮放比例變量來繪製圖片,則只需在setter中添加對setNeedsDisplay的調用即可,並且在縮放比例更改時不必編寫任何代碼來重新繪製圖片。)
在任何情況下,下面的代碼(包含獵食的限度檢查,但在新的規模變量)應該爲你的選擇方法的工作:
- (void)pinch:(UIPinchGestureRecognizer *)recognizer
{
if (recognizer.state == UIGestureRecognizerStateChanged ||
recognizer.state == UIGestureRecognizerStateEnded) {
if (imageView.scale < yourScaleLimit) {
imageView.scale *= recognizer.scale;
//any other code to scale up the image if
//just changing imageView.Scale is not enough
}
recognizer.scale = 1.0;
}
}
我希望這是有幫助的。
在選擇器方法gestureRecognizer
檢查scale
sender
(UIPinchGestureRecognizer
)的屬性如果它小於你想要縮放,對圖像應用縮放否則不要。例如,下面的方法是selector
然後是pinchGesture
。
-(void)pinchAction:(UIPinchGestureRecognizer *)sender
{
if(sender.scale<yourScaleLimit)
{
//scale up the image
}
}
感謝,
scale是兩個pinchAction調用之間的相對值,在每次pinchAction調用後設置爲1。所以它不是你的原始視圖尺寸和你當前的視圖尺寸之間的絕對關係 – Seega 2011-04-13 09:49:21
在這裏,imageView不支持.scale屬性。這個錯誤的任何替代方法? – Hemang 2012-10-01 12:45:55
@Hemang:注意上面的第三段。 'imageView.scale'是指您在UIImageView子類中創建的實例變量,用於跟蹤累積的比例變化。或者,您可以在視圖控制器中創建一個實例變量,然後將其稱爲「self.imageViewScale」。無論哪種方式,您都需要一個新變量來跟蹤規模的累積變化。 – 2012-10-03 07:38:19
感謝您的幫助。我錯過了閱讀第3段的那部分內容。所以我犯了一個錯誤。謝謝。代碼工作正常。 – Hemang 2012-10-06 12:21:58