2009-01-29 58 views
0

我想使用UIScrollView的滾動/平移功能,但我想處理所有縮放和縮放自己。我目前的計劃是有一個viewController擁有一個UIView(我將它稱爲view1)與多個UIViews和UIScrollViews作爲孩子。如何實現我自己的縮放,但仍然可以訪問UIScrollView的滾動?

view1是否可以處理所有多點觸摸事件(爲了手動呈現他的所有孩子的縮放狀態)並將結果繪製到每個相應的滾動視圖上以允許用戶滾動結果? (爲了好奇,應用程序繪製了多個熱圖,每個熱圖都有自己的一組座標軸,在縮放或滾動時,座標軸需要更新自己以正確標記數據區域中顯示的範圍(滾動視圖) 。我無法使用默認的上下文圖像縮放縮放,這是因爲在上下文上繪製的任何東西都會縮放(包括參考線等)。縮放操作實際上並不是讓事物變大,而是調整可視數據範圍。)

回答

0

感謝您的建議brad。我結束了使用的解決辦法是延長的UIScrollView並重寫touchesMoved:withEvent:方法方法與此:

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    if ([[event touchesForView:self] count] == 1) 
     [super touchesMoved:touches withEvent:event]; 
    [content touchesMoved:touches withEvent:event]; 
} 

其中,「內容」是指向我的滾動視圖的內容子視圖。我必須這樣做,因爲我的內容需要放大到點(即用戶手指下的數據空間中的點不應改變)。發送給setTransform的信息:只能告訴我內容幀的大小,但我也需要將偏移量加入其中。

4

確實可以讓主要託管視圖攔截多點觸控事件並以編程方式縮放基礎UIViews。這是我在my application的OpenGL顯示部分(源可用的here)所做的。您仍然可以將單點觸摸事件傳遞到底層滾動視圖以進行平移等。

但是,仍然可能有辦法在不截取觸摸事件的情況下執行您描述的操作。 UIScrollView通過將轉換應用於內容視圖來執行其默認縮放比例。作爲對this question的迴應,我描述了一種在縮放縮放完成後以新比例重新呈現內容視圖的方法。這樣可以讓您在變焦完成後以銳利的網格線刷新繪圖。

此外,如果您沒有真正縮放,並且想要使用縮放縮放來更改視圖的另一個屬性,那麼可以執行我在該問題中描述的內容,並截取contentView上的轉換設置,不適用變換。您可以從該變換中提取UIScrollView想要設置的比例尺,然後對該視圖進行自定義重繪。

相關問題