如何在我的iPhone應用程序中將UILabel從A點拖動到B點?將UILabel從A點拖到B點
回答
基本上,您需要自己構建功能。您可以在包含完整可拖動區域的超級視圖中通過listening to touches執行此操作。方法hitTest:withEvent:
可以告訴您觸點是否在要拖動的標籤中。
從那裏,您可以覆蓋touchesMoved:withEvent:
方法來更新UILabel
的位置,以保持其與手指對齊。更新標籤的位置將自動爲您重新繪製。
Here's a relevant question for iphone drag/drop。
一旦你拖動工作,我還建議注意在第一次觸摸的地方UILabel
內的位置,並且以這樣的方式處理重新定位,使得手指總是在UILabel
內的那個點上。一個更易於編碼但看起來更糟糕的版本是簡單地將標籤的左上角重新定位爲手指所在的位置,但這可能會使標籤在第一次開始拖動時出現跳躍。
這可能聽起來很嚇人,但它確實不是那麼糟 - 總共只有幾行代碼。除非你有意見可能重疊。這又是幾行,取決於你想如何處理它。
// MARK: - Touch Functions
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
guard let location = touches.first?.preciseLocationInView(quoteView) else { return }
if quoteView.pointInside(location, withEvent: event) {
locationInView = location.y
isInButton = true
} else {
isInButton = false
}
}
override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) {
if isInButton {
guard let totalYMovement = touches.first?.preciseLocationInView(self.view).y,
locationInView = self.locationInView else { return }
var yMovement = totalYMovement - quoteViewLocation
if locationInView >= (self.quoteView.frame.height/2) {
// Works!
yMovement = yMovement - (locationInView - (self.quoteView.frame.height/2))
} else {
yMovement = yMovement + ((self.quoteView.frame.height/2) - locationInView)
}
self.quoteView.transform.ty = yMovement
}
}
我用上面的代碼來翻譯Y軸的視圖。所述quoteViewLocation變量是一個gettable CGPoint返回
self.view.frame.height/2
locationInView是被設置每一個抽頭要變換被輕敲的視圖的內部由時間可選CGPoint。
您可以使用我的代碼將按鈕放置在您的視圖中的任何位置,只要確保您的quoteViewLocation(無論您將要調用它)變量返回CGPoint.y水平等分視圖。這一點必須是超視圖的相應點。我的意思是,如果你有一個40點的高度和40點的高度的超級視圖的子視圖,並且子視圖被集中在超級視圖的中間,你可能會認爲正確的CGPoint爲返回是20.不是!雖然這是子視圖的正確中心Y,但超視圖的中心是200.返回超視圖的CGPoint。
您必須這樣做才能保持轉換順暢。
如果你想沿x軸移動視圖,它是一樣的想法。
如果我錯過了任何東西或misspoke撕裂我。也試圖在這裏學習。
感謝
- 1. 使用jQuery將點表A從點A移動到點B
- 2. 直接從A點移動到B點
- 3. 將對象從A點移動到B點
- 4. Libgdx Actions =>將演員從A點逐漸移動到B點
- 5. 以恆定速度將物體從點A移動到點B
- 6. jquery - 將UL從UL A拖到UL B並從UL A移除?
- 7. 移動gameObject點A到點B
- 8. GIS,OSM,ROUTING:如何通過'road'節點從A點到B點?
- 9. numpy的:點(A,B)和(A * B)的.sum()
- 10. 將點A以三維弧形運動移動到點B
- 11. 從點A到點B的Pygame子彈運動
- 12. 我如何繪製一條從A點到B點的線
- 13. 發現從A點到B點的距離爲iPhone
- 14. 從點A到點B的圖像轉換
- 15. 查找從A點到B點的路徑(n個循環)
- 16. 從肋骨點A到肋緣點B查找路徑
- 17. 從二維空間中的點A到點B的標題?
- 18. 如何從A點到B點如導航系統
- 19. 在二維空間中將點從A移動到B
- 20. Windows Phone:使用PointAnimation將圖像從點A動畫到B
- 21. 使用XAML/C將一個按鈕從A點移動到B點#
- 22. Cocos2d - 將一個精靈從A點移動到B點,以正弦波運動
- 23. FFmpeg的 - 從A點移動覆蓋到B到C到d
- 24. Excel工作表到iPhone數據 - A點到B點
- 25. 查詢暗號節點A沒有節點B與第B
- 26. 當用戶從點a拖拽到點b時,在橢圓之間創建一條線
- 27. 從{a-b,b-c,c-a}改變爲{(a,b),(b,c),(c,a)}?
- 28. 算法是節點A在圖中連接到節點B
- 29. 確定點A是否需要切角才能到達點B
- 30. 給定兩個點集A和B,你如何找到離B最遠的點?
很好的意見會重疊...... – 2009-09-18 01:53:12
一旦你有一個手柄,要在拖動可以移動的標籤,你可以調用[自我bringSubviewToFront:標籤]。它會覆蓋其他一切(如果這就是你想要做的)。 – Tyler 2009-09-18 05:04:13