2016-12-01 173 views
0

如何實現UIView的單面和淡出邊框。對不起,我沒有足夠的聲望發佈屏幕截圖。但在iOS本地聯繫人應用中有一個示例。如果你點擊「+」然後「添加電話」,將會出現垂直線,這正是我想要的。如何爲uiview製作淡出邊框

我已經爲UIView實施了單邊邊界,但找不到一種方法使其淡出。我試過CIFilter,這沒有奏效。然後我注意到這種淡出效果與陰影一樣。我試圖通過設置陰影來模擬淡出,但又失敗了。

感謝您提前給出任何答案和建議。

+0

你想褪色到另一種RGB顏色? – SPlatten

+0

@SPlatten從灰色漸變爲白色。我使用下面的答案中建議的CAGradientLayer完成了它。感謝您的幫助 – Todanley

回答

0

你可以使用一個CAGradientLayer

let layer = CAGradientLayer() 
layer.colors = [UIColor.white.cgColor, UIColor.gray.cgColor] 
// play around with layer.locations and layer.{startPoint|endPoint} to suit your needs 

然後,您可以繼承UIView並覆蓋其layerClass返回梯度層,然後 大小和位置這一觀點,請你:

override class func layerClass() -> AnyClass { 
    return CAGradientLayer.self 
} 
// configure the layer with color, end/start and locations in init() 

這允許您將該視圖放在任何位置,並使用自動佈局來調整大小並按照您的要求放置它。

+0

非常感謝!我現在正在UIView的init中使用圖層。我認爲我在正確的軌道上,但只是有一個問題:爲什麼UIView將其圖層屬性設置爲只讀?爲什麼不簡單地讓我們設置圖層屬性而不是先返回layerClass,然後在init中配置圖層(在此之前我沒有關於CALayer的經驗)。對不起,我投了你的答案,但沒有算,因爲我現在沒有足夠的聲望。 – Todanley

+0

'UIView'由'CALayer'支持,因此UIKit需要在初始化時知道​​該圖層的類型(請注意'layerClass'返回該圖層的類型,而不是實例)。也就是說,視圖的背景層在創建後無法更改。如果您發現我的答案合適,我相信您可以將其標記爲正確答案:-) –

+0

我已經完成了使用CAGradientLayer後的工作。非常感謝你。而你對CALayer的解釋解決了我的問題。現在我明白爲什麼UIView的圖層屬性是隻能得到的,非常感謝。我想我已通過點擊該勾號成功接受了您的答案。 – Todanley