2012-05-27 19 views
0

我正在構建一個ios應用程序。 在我的應用程序中,我有一個視圖,其中包含ImageView 我在圖像視圖周圍創建了一個邊框,方法是在其周圍添加子視圖。 每個子視圖都有它自己的唯一值(5,10,15,10)如何縮放視圖並將自定義邊框保留爲原始大小比例尺?

我給予我的用戶移動,旋轉和縮放超級視圖的能力。 當前每個比例尺都會導致我的邊框視圖也發生變化。 我想要內部圖像周圍的邊框保持原來的未縮放大小。你可以在截圖中看到,我有兩個UIViews。 它們都具有相同的陰影邊界(請參閱代碼) 第一個是縮放X 2。結果不僅是縮放視圖,而且是縮放陰影。 我的問題是,我怎樣才能縮放視圖,而不是它的影子。

view.layer.MasksToBounds = false; 
    view.layer.ShadowColor = [[UIColor alloc] initWithRed:0 green:0 blue:0 alpha:0.5].CGColor; 
    view.layer.ShadowOpacity = 0.5f; 
    view.layer.shadowRadius = 1.0f; 
    view.layer.ShadowOffset = CGSizeMake(0, 2.5f); 
    UIBezierPath * depthShadowPath = [UIBezierPath bezierPath ]; 
    [depthShadowPath moveToPoint:CGPointMake(-border , -border) ]; 
    [depthShadowPath addLineToPoint:CGPointMake(view.frame.size.width + border , -border) ]; 
    [depthShadowPath addLineToPoint:CGPointMake(view.frame.size.width + border , view.frame.size.height + border) ]; 
    [depthShadowPath addLineToPoint:CGPointMake(-border , view.frame.size.height + border) ]; 
    [depthShadowPath addLineToPoint:CGPointMake(-border , -border) ]; 
    [view.layer setShadowPath:[depthShadowPath CGPath ] ]; 

enter image description here

如何才能做到這一點?

+1

你能爲我們添加一個截圖嗎?根據你所說的話,我在頭腦中描繪了兩種不同的東西,並且不知道哪一個實際上是你的項目的設置:) – WendiKidd

+0

我原以爲這取決於你如何改變你的邊界視圖大小。你在使用autoResizing蒙版嗎?你是否手動設置值?正如WendiKidd所建議的那樣,我們可能不得不多看一些,也許還需要看代碼(或者至少是描述代碼如何移動,旋轉,縮放超級視圖,因爲有不同的方式來實現,因此解決方案變化)。 – Rob

+0

你有沒有找到一種方法來做到這一點? – Andres

回答

0

在我看來,該視圖可能不會重繪,但只是在內存中縮放。嘗試設置view.contentMode = UIViewContentModeRedraw,或通過發送[view setNeedsDisplay]消息手動強制重繪。

+0

不起作用:( – vondip

+0

)我認爲你不需要抱怨和提供建設性的幫助,而是需要提供一些代碼,你沒有提到如何進行擴展,也沒有說明重繪代碼是否是實際上在縮放完成後運行 –

+0

你是對的,我不應該降低你的答案,只是你沒有提供一個好的解決方案,我不希望其他人在未來感到困惑。當5小時限制結束時,請回復備份 – vondip

相關問題