gpt4 book ai didi

ios - 如何隐藏 CALayer 的边框而不导致 iOS 中的渲染问题

转载 作者:行者123 更新时间:2023-12-01 19:50:21 24 4
gpt4 key购买 nike

我在水平方向上一个接一个地拥有三个 UIView,每个 UiView.Layer.BorderColor 设置为黑色,UiView.Layer.BorderWidth 设置为 0.25f,如下所示。因此,这为每个 View 提供了边框外观。

UiView's with borders applied

现在我需要只显示 UiViews 的水平边框。因此,我创建了一个 mask 层并将路径和框架设置到该 mask 层以应用剪辑。请引用下面的代码片段,让您了解正在做什么。

foreach (UIView UiView in myViews)
{
UiView.Layer.BorderColor = Color.Black.ToCGColor();
UiView.Layer.BorderWidth = 0.25f;
UIBezierPath maskPath = null;
CAShapeLayer maskLayer = new CAShapeLayer();
maskLayer.Frame = UiView.Bounds;
// Applying Clip to my layer
maskPath = UIBezierPath.FromRect(new CGRect(UiView.Bounds.Left + 0.5, UiView.Bounds.Top, UiView.Bounds.Width - 1, UiView.Bounds.Height));
maskLayer.Path = maskPath.CGPath;
view.Layer.Mask = maskLayer;
}

是的,我知道无论我为 maskPath 设置的边界是可见区域,所以假设每个 UiView 的宽度为 60,根据我在代码中编写的内容,我的可见区域是每个 UIView 的 0.5 像素到 59.5 像素.从而消除从 0 到 0.5 和从 59.5 到 60 的像素中存在的边界。希望这部分对您来说很清楚。请参阅下图以直观地显示我的蒙版区域。黄色边框表示掩码边界。

borderClip

现在一切都很好,但是这个隐藏的 0.5 像素边框会在我的 UiView 的顶部和底部边框中连续放置一个空白区域。请引用下图,圆圈中的点突出了顶部和底部的空隙。
final result

这也可以很容易地在代码中重现。请建议我如何克服这个问题。我究竟做错了什么。我知道这是一个非常小的半个像素的空白空间,大多数时候肉眼几乎看不到,但是对于我的 GridView 应用程序来说,它在视觉上并不令人愉悦。

PS:我正在 Xamarin.iOS 中开发,但是 native iOS 解决方案也会有所帮助。

提前致谢

最佳答案

为 Swift 试试这个。

class ViewController: UIViewController {

@IBOutlet weak var view1: UIView!
@IBOutlet weak var view2: UIView!
@IBOutlet weak var view3: UIView!


override func viewDidLoad() {
super.viewDidLoad()

var borderwidth = CGFloat()
borderwidth = 5

let topBorder = CALayer()
topBorder.backgroundColor = UIColor.black.cgColor
topBorder.frame = CGRect(x: self.view1.frame.origin.x, y: self.view1.frame.origin.y, width: self.view3.frame.origin.x + self.view3.frame.size.width - self.view1.frame.origin.x, height: borderwidth)
self.view.layer.addSublayer(topBorder)

let bottomBorder = CALayer()
bottomBorder.backgroundColor = UIColor.black.cgColor
bottomBorder.frame = CGRect(x: self.view1.frame.origin.x, y: self.view1.frame.origin.y + self.view1.frame.size.height - borderwidth, width: self.view3.frame.origin.x + self.view3.frame.size.width - self.view1.frame.origin.x, height: borderwidth)
self.view.layer.addSublayer(bottomBorder)

}

}

查看此屏幕截图 : 1

关于ios - 如何隐藏 CALayer 的边框而不导致 iOS 中的渲染问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46336367/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com