2012-02-09 67 views
3

我有一個UIScrollView,它顯示一個UIView,它本身包含一個小視圖層次結構。其中一個子視圖用於繪製圖標(它們的邏輯含義是PDF頁面上的便籤標記)。目前,圖標與所有其他內容一起放大。但是,無論當前的縮放比例如何,我都想用相同的尺寸繪製它們(當然,它們的正確位置仍然必須保持)。什麼是最好的方法來做到這一點?以縮放不變的方式在UIScrollView中繪製圖像

+0

您是否嘗試過在UIView上使用[autoresizingMask](https://developer.apple.com/library/ios/#documentation/uikit/reference/uiview_class/uiview/uiview.html)?它的默認值是UIViewAutoresizingNone – 2012-02-09 17:22:08

+0

我沒有,但它不是一個簡單的解決方案。充其量,我將不得不計算PDF頁面的哪個部分在該常量大小的視圖中顯示,並相應地過濾圖標。這是很多工作,所以我希望有一個更簡單的解決方案:-) – 2012-02-09 17:35:06

+0

我的複雜解決方案是通知有關任何縮放更改的圖標視圖,並使其重繪+相應地重新定位自己。 – 2012-02-09 17:38:11

回答

0

您基本上必須單獨設置子視圖的變換比例以匹配scrollView的縮放因子。所以每當您滾動,通過子視圖和循環,如果滾動視圖縮放因子,就是說,5.0,你設置的轉換是這樣的:

CGFloat scaleFactor = 1.0/5.0; // 1.0 divided by the scrollview zoom factor 
subview.transform = CGAffineTransformMakeScale(scaleFactor, scaleFactor); 

從積極的一面,它會被正確中心,因此所有你所要做的就是設置變換,其他的東西都應該可以工作(你不必操縱這個框架)。

+0

不幸的是,它不起作用 - 因爲它將變換相對於視圖的中心,而不是相對於每個圖標的中心。所以它實際上在縮放過程中相對於文本移動圖標。 – 2012-02-12 13:47:43

+0

我敢肯定,它將縮放應用於視圖的中心 - 您確定將其應用於圖標視圖而不是容器視圖? – 2012-02-12 17:37:16

+0

你是對的,但我在單個視圖上繪製所有圖標,我沒有給出每個圖標的單獨視圖。不過,我想我也可以縮放圖標的來源,這應該可以解決問題。現在嘗試。 – 2012-02-13 08:29:31