簡體   English   中英

iOS:UIPanGesture和框架/邊界問題

[英]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基礎知識的圖像:

http://i.imgur.com/obRKMaT.png

使用手勢識別器通過以下方式找出手指在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM