2011-05-30 82 views
1

我有一個縮放UIScrollView,其中包含一個UIView其中包含MyRectangleView類的一些自定義UIViewsScrollView和這些rectangleView都會得到一個指向普通定製UIViewController,MyViewController的指針。在縮放時保持恆定的線寬UIScrollView子視圖

是否有可能使它們看起來象增長當滾動視圖放大到使這些自定義視圖,而不是出現縮放

我會覆蓋drawRect:,我已經設法使他們改變自己的身高,但維持其寬度時,滾動視圖被放大,通過實施myViewControllerscrollViewDidZoom:和存儲在一個屬性的當前zoomScalerectangleView小號訪問,然後將它們的寬度除以zoomScale

我已經做了相同的線寬,但作爲所有縮放的結果,結果看起來很模糊(儘管線寬保持或多或少不變,視覺上)。

有沒有更好的方法來做到這一點?

如何實現一個自定義UIView作爲縮放UIScrollView的子視圖,它提供了恆定的線寬並且不會模糊?

我想過的一個解決方案是使縮放的視圖不可見,並在scrollView上創建其他視圖,以便從它們獲取其大小,但如果可能,我寧願避免這種情況。

回答

1

答案是將這些矩形視圖設置爲UIScrollView的子項,並且不讓它們返回viewForZoomingInScrollView:。這意味着它們將被滾動,但不會縮放。

在他們的drawRect中,我使用scrollView的zoomScale(由VC提供)轉換它們的框架。這會導致輕微的僞像,因爲更改框架會觸發重繪(不會觸發drawRect :),但我現在願意忍受這一點。

這意味着我可以設置它們的大小,就像它們被縮放,但用1:1像素繪製它們,添加文本,圖像等,並且它們保持清晰。

+0

約this.http任何想法以下稱爲://stackoverflow.com/q/19856928/935381 – Hitarth 2013-11-09 08:15:26

4

我已經成功地使用了另一種方法。我在子類的UIView

-(void)resize:(CGFloat)scale {  
self.transform = CGAffineTransformMakeScale(1/scale, 1/scale); 

}

哪裏規模的UIScrollView當前zoomScale寫了一個自定義的方法。這種方法是從在父視圖

-(void)scrollViewDidZoom:(UIScrollView *)_scrollView { 

for (PushPin *pushpin in drawingPlaceholder.subviews) { 
    if ([pushpin isKindOfClass:[PushPin class]]) { 
     [pushpin resize:_scrollView.zoomScale]; 
    } 
} 

}

相關問題