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 中的屏蔽图像

滚动后 UITableViewCell 标签发生变化[重复]

出现删除按钮时重新计算自定义 UITableViewCell 的高度

圆形图像视图最初在 UITableViewCell 中加载为正方形 - Xamarin.iOS