繁体   English   中英

为嵌入到堆栈视图中的视图设置图层的cornerRadius会产生意外结果

[英]Setting cornerRadius of layer for a view embedeed in stack view gives unexpected results

ModernBoldButtonUIButton的子类,下面是它的一个片段:

private func commonInit() {
    insertSubview(blurView, at: 0)
    if let imageView = imageView {
        bringSubviewToFront(imageView)
    }
    if let titleLabel = titleLabel {
        bringSubviewToFront(titleLabel)
    }
    backgroundColor = .clear
    clipsToBounds = true
}

override func layoutSubviews() {
    super.layoutSubviews()
    layer.cornerRadius = bounds.width / 2
}

我在堆栈视图中嵌入了四个UIButton,如屏幕截图所示,所有按钮的形状都不正确,它们应该看起来像一个圆圈。

我怀疑我应该在代码中的其他地方设置cornerRadius ,但是在哪里?

在此处输入图片说明

为了使它们看起来像圆形,您的边界必须是正方形 看来您的按钮不是这种情况(宽度大于高度)。

您可以在按钮上添加一些约束,以保持1/1的比率。

除此之外,您还需要将其设置在正确的位置。

取整为with/2将使顶侧和底侧完全变圆(眼睛形状👁)取整为height/2将使左侧和右侧完全变圆(像这样()

因此,如果您想要一个圆,则需要确保widthheight大小都相同,例如正方形。

为了自动完成它,您可以使用自动布局,stackView将负责调整大小:

self.translatesAutoresizingMaskIntoConstraints = false
self.heightAnchor.constraint(equalTo: self.widthAnchor).isActive = true

确保只做一次以避免重复。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM