【问题标题】:Making an any size button?制作任意大小的按钮?
【发布时间】:2016-11-22 05:57:30
【问题描述】:

我正在尝试创建一个半圆形的按钮。

内部按钮类

 layoutSubviews() { 
    createSemiCirclePath()
 }

 func createSemiCirclePath(){
       self.translatesAutoresizingMaskIntoConstraints = false
       self.clipsToBounds = true
       semiCircleShape.path = UIBezierPath.init(arcCenter: CGPoint(x: self.frame.size.width/2 , y:0), radius: self.frame.size.width/2, startAngle: 0, endAngle: CGFloat(M_PI), clockwise: true).cgPath
       self.layer.addSublayer(semiCircleShape) 
       self.layer.masksToBounds = true

    }

我明白了:

但我想要这样:

如果我在尝试

 func createSemiCirclePath(){
       self.translatesAutoresizingMaskIntoConstraints = false
       self.clipsToBounds = true
       semiCircleShape.path = UIBezierPath.init(arcCenter: CGPoint(x: self.frame.size.width/2 , y:0), radius: self.frame.size.width/2, startAngle: 0, endAngle: CGFloat(M_PI), clockwise: true).cgPath
       self.layer.mask = semiCircleShape
       self.layer.masksToBounds = true

    }

我的按钮是

它还允许点击按钮高度的 50% 以下,我不需要。

(在 1 个代码中)

问题是,只有黑色部分应该是可点击的,而蓝色部分应该被隐藏,即它应该剪辑到子图层。

感谢任何建议。 谢谢。

【问题讨论】:

标签: ios uibutton


【解决方案1】:

也许您可以继承 UIControl 类,它包含处理触摸事件的方法以及处理目标/选择例程的类。
此外,此类不包含作为 UIButton 的自定义绘制逻辑。 在您的示例中,您应该只扩展 UIControl 并添加

controlInstance.backgroundColor = [UIColor clearColor];

【讨论】:

  • 这不是你的课吗?
  • class semiCircle:UIButton this my class
  • 为什么不能改成 semiCircle:UIControl 类?
猜你喜欢
  • 2022-12-29
  • 2016-11-24
  • 2021-04-26
  • 2023-01-02
  • 1970-01-01
  • 1970-01-01
  • 2016-04-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多