【问题标题】:Circular button in UITableViewCellUITableViewCell 中的圆形按钮
【发布时间】: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设置为按钮高度或宽度的一半

标签: ios swift uibutton uitableview


【解决方案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 设置角半径。希望对你有帮助

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-08-28
        • 2012-03-09
        • 1970-01-01
        • 2012-02-28
        • 2016-11-14
        相关资源
        最近更新 更多