UITableViewCell 中的圆形按钮
Posted
技术标签:
【中文标题】UITableViewCell 中的圆形按钮【英文标题】:Circular button in UITableViewCell 【发布时间】:2016-03-09 09:53:00 【问题描述】:我想在UITableViewCell
中创建一个圆形按钮。
我在 IB 中使用autolayout
约束。
通常,我在viewDidLayoutSubviews
中设置圆角半径,以保持按钮为圆形,尽管autolayout
。
我还没有在UITableViewCell
中找到如何做到这一点。我的纽扣是菱形而不是椭圆形的! :-(
谢谢!
这是我制作圆形按钮的方法:
extension UIButton
func setCircular()
layer.cornerRadius = layer.frame.width / 2
我是这样做的
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! MyCellClass
cell.goodButton.setCircular()
【问题讨论】:
您能告诉我们您的代码吗?cornerRadius
技巧应该可以工作(唯一关心的是性能,因为 conrnerRadius
不是很快)。
将cornerRadius
设置为按钮高度或宽度的一半
【参考方案1】:
我想你忘记在课堂上添加self.imageView.layer.masksToBounds = true
override func layoutSubviews()
super.layoutSubviews()
self.makeItCircle()
func makeItCircle()
self.yourbutton.layer.masksToBounds = true
self.yourbutton.layer.cornerRadius = CGFloat(roundf(Float(self.yourbutton.frame.size.width/2.0)))
更多信息请见this
【讨论】:
真正的问题是我必须让我的按钮在layoutSubviews()
中循环,而不是在cellForRowAtIndexPath
函数中。谢谢!
你。已保存。我的。生活。 layoutSubviews ftw。【参考方案2】:
如果您的 Button 高度宽度是固定的 您可以使用用户定义的运行时属性,这将直接从界面生成器设置角半径
参考链接 User Defined Runtime Attributes
【讨论】:
【参考方案3】:这将对您有所帮助:
goodButton.layer.cornerRadius = goodButton.layer.frame.height / 2
goodButton.layer.masksToBounds = true
注意:请确保您的按钮具有相同的宽度和高度。
【讨论】:
【参考方案4】:extension UIView
@IBInspectable var cornerRadius: CGFloat
get
return layer.cornerRadius
set
layer.cornerRadius = newValue
layer.masksToBounds = newValue > 0
我在 swift 中使用此扩展程序通过 Interface Builder 设置角半径。希望对你有帮助
【讨论】:
以上是关于UITableViewCell 中的圆形按钮的主要内容,如果未能解决你的问题,请参考以下文章
dequeueReusableCellWithIdentifier、自定义 UITableViewCell 的问题
保存 UITableviewcell accessoryView 的状态
滚动后 UITableViewCell 标签发生变化[重复]