[英]Prevent UIPanGesture from offscreen and go out the bounds of its parent view - iOS
[英]iOS: UIPanGesture and frame/bounds issue
我創建了一個相對簡單的應用程序,該應用程序允許用戶從屏幕底部的“托盤” UIView
拖動圖像視圖,並在放置視圖時將其自身添加到“目標” UIView
的子視圖中。
我的問題是,當我將imageview放到目標視圖中時,框架是完全錯誤的,並且imageview跳了起來(看似隨機)到目標視圖中的另一個位置。
我已經把頭發扯下來了,並且腦袋很大。 有沒有一種方法可以只獲取超級視圖中拖動視圖的坐標,然后將其轉換為目標視圖的坐標?
如您所見,我將圖標從“托盤”視圖中移出,並在拖動開始時進入主視圖。 結束時,我只需將圖標添加到目標視圖即可。
if (gesture.state == UIGestureRecognizerStateBegan){
if (icon.superview == viewTray) {
[self closeTray:nil];
[self.view addSubview:icon];
}
}
if (gesture.state == UIGestureRecognizerStateEnded) {
[viewTarget addSubview:icon];
}
Xib基礎知識的圖像:
使用手勢識別器通過以下方式找出手指在viewTarget框架中的觸摸位置:
CGPoint p = [gesture locationInView:viewTarget];
然后將圖標的中心設置為該點,即可完成操作:
icon.center = p;
[icon removeFromSuperView];
[viewTarget addSubview:icon];
問題在於框架位於其superView的范圍內。 因此,當您將其放入新的superView中時,它是不一樣的。 您需要對其進行轉換。
此代碼會將其從其superView坐標系轉換為其targetView坐標系。 您可能應該在[viewTarget addSubview:icon];
之后[viewTarget addSubview:icon];
執行此操作[viewTarget addSubview:icon];
[viewTarget convertRect:icon.frame fromView:icon.superView];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.