gpt4 book ai didi

ios - Swift - 标签角在tableviewcell中有不同的半径

转载 作者:行者123 更新时间:2023-11-30 12:29:43 27 4
gpt4 key购买 nike

我有一个带标签的 tableView 单元格。
我想制作带有圆角半径的标签。
我知道这样调用该函数:

label.layer.cornerRadius = 6

带角的标签如下:

But I want to let three corners have半径。
于是,我找到了这个函数。

func roundCorners(corners:UIRectCorner, radius: CGFloat) {
let mask = CAShapeLayer()
mask.path = UIBezierPath(roundedRect: bounds, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius)).cgPath
layer.mask = mask
}

但我称这个函数为标签消失。
我的表格 View 单元格出了什么问题。

标签消失:

enter image description here

我的代码:

class ContentLabel:UILabel {

override init(frame: CGRect) {
super.init(frame:frame)
translatesAutoresizingMaskIntoConstraints = false
numberOfLines = 0
isUserInteractionEnabled = true
}

required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}

override func drawText(in rect: CGRect) {
let insets: UIEdgeInsets = UIEdgeInsets(top: defaultContentPadding, left: defaultPadding, bottom: defaultContentPadding, right: defaultPadding)
super.drawText(in: UIEdgeInsetsInsetRect(rect, insets))
}

class TableViewCell: UITableViewCell {

var labelView:UILabel = { ()->UILabel in

let label:UILabel = ContentLabel()
label.translatesAutoresizingMaskIntoConstraints = false
label.numberOfLines = 0
label.lineBreakMode = NSLineBreakMode.byCharWrapping

//label.layer.cornerRadius = 6
label.roundCorners(corners: [.topLeft,.topRight,.bottomLeft], radius: 6)

//What's wrong here!!!!!!!
label.layer.masksToBounds = true
return label
}()

override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
loadView()
}

func loadView() {
contentView.addSubview(labelView)
}

override func layoutSubviews() {
super.layoutSubviews()
loadConstraints()
}

func loadConstraints() {
let labelViewWidth:CGFloat = contentView.bounds.width*0.6
labelView.frame = CGRect(x: 0, y: 0, width: labelViewWidth, height: CGFloat.greatestFiniteMagnitude)
labelView.sizeToFit()

let views = DictionaryOfInstanceVariables(self, objects: "labelView","icon")
let metrics = ["padding":10]

addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:[labelView]-padding-[icon]-padding-|", options: [], metrics: metrics, views: views))
}
}

我也尝试在func layoutSubviews()中添加代码,我成功更改了角点,但是当我滚动tableview时,单元格内容消失了,并且是滚动非常缓慢。

最佳答案

试试这个:

在 Storyboard中将约束应用于标签(w.r.to cell view,如果添加它):

  1. 顶部布局,
  2. 领先,
  3. 图像之间的水平间距。

关于ios - Swift - 标签角在tableviewcell中有不同的半径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43715382/

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