簡體   English   中英

UIView圓角和陰影在4個邊緣上留下微小的錯誤像素

[英]UIView rounded corners and drop shadow leaves tiny wrong pixel(s) on 4 edges

我想要一個帶有圓角和陰影的UILabel(在邊界上,而不在文本上)

除了幾乎討厭的所有4個邊緣上錯誤的顏色像素(“四舍五入”的“余數”)之外,我幾乎都能完成這項工作:

在此處輸入圖片說明

這是我的自定義可重用視圖:

在此處輸入圖片說明

我已將各種視圖設置為不同的顏色,以便能夠嘗試查看哪個視圖行為異常。

頂層視圖是我做投影的地方(backgroundColor = green):

    view.layer.shadowColor = UIColor.blackColor().CGColor
    view.layer.shadowOpacity = 0.2
    view.layer.shadowOffset = CGSizeMake(3, 3);
    view.layer.shadowRadius = 3

請注意,討厭的錯誤像素確實是綠色的。

中間的視圖(“ BackgroundView”)是我做圓角的地方(backgroundColor =紅色):

    backgroundView.layer.cornerRadius = 3
    backgroundView.layer.masksToBounds = true

如果這樣做,這些邊緣將從綠色變為白色。 我不知道白色是從哪里來的:

view.backgroundColor = UIColor.greenColor().colorWithAlphaComponent(0.0)

如果我嘗試進行簡單的破解,並將頂級視圖的backgroundColor設置為粉紅色背景,則它會與我的投影的底角混淆,如下所示:

在此處輸入圖片說明

我是Swift和iOS的新手,我肯定知道我在做一些事情。

更新:我正在嘗試使它成為自定義可重用的視圖(xib + swift文件)。 我發現使用這種方法時,我必須使用多個視圖,而我並不能完全正確使用它,但是如果我只是嘗試在Main.storyboard中手動制作一個一次性視圖(陰影+圓角), ,效果很好(甚至只有1個視圖!)。 這是為什么?

您需要使用圓角的rect路徑( CGPathCreateWithRoundedRect )將shadowPath設置到視圖的圖層

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM