gpt4 book ai didi

iOS 如何删除细边框线然后使用 layer.cornerRadius

转载 作者:可可西里 更新时间:2023-11-01 06:06:19 26 4
gpt4 key购买 nike

我总是使用简单的方法来获取 View 圆角

+ (void)setRoundedCornersByView:(UIView*) givenView roundAngle:(int)roundAngle borderWidth:(double)borderWidth borderColor:(UIColor*)borderColor alphaBorder:(double)alphaBorder {
givenView.layer.cornerRadius = roundAngle;
givenView.layer.borderColor = [[borderColor colorWithAlphaComponent:alphaBorder] CGColor];
givenView.layer.borderWidth = borderWidth;
givenView.layer.masksToBounds = YES;
}

但是现在我在圆线周围有细边框,它是一条细线,颜色类似于圆角 View 的背景色

enter image description here

如何在不使用 onDraw 的情况下删除它,因为这是不可能的 - 因为这意味着我必须在需要圆角的地方覆盖所有 iOS 控件。

你也试试看

UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:bound byRoundingCorners:corners cornerRadii:cornerRadii];
CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
maskLayer.frame = givenView.bounds;
maskLayer.path = maskPath.CGPath;
givenView.layer.mask = maskLayer;

但是,如你所见,它不是完全圆的

enter image description here

最佳答案

很明显,图层边界不够大,无法覆盖角绘制剪辑后的整个图像。因此,您可以稍微扩大图层的边界以覆盖 View 的图像。像这样:

+ (void)setRoundedCornersByView:(UIView *)givenView roundAngle:(int)roundAngle borderWidth:(double)borderWidth borderColor:(UIColor *)borderColor alphaBorder:(double)alphaBorder
{
CGFloat offset = 1.f; // .5f is also good enough
givenView.layer.cornerRadius = roundAngle + offset;
givenView.layer.borderColor = [[borderColor colorWithAlphaComponent:alphaBorder] CGColor];
givenView.layer.borderWidth = borderWidth + offset;
givenView.layer.masksToBounds = YES;

[givenView.layer setBounds:CGRectMake(-offset,
-offset,
CGRectGetWidth(givenView.frame) + offset * 2.f,
CGRectGetHeight(givenView.frame) + offset * 2.f)];
}

关于iOS 如何删除细边框线然后使用 layer.cornerRadius,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28977161/

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