Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/107.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在标签右上角添加点_Ios_Swift_Uilabel_Badge - Fatal编程技术网

Ios 在标签右上角添加点

Ios 在标签右上角添加点,ios,swift,uilabel,badge,Ios,Swift,Uilabel,Badge,您好,我正在创建swift应用程序,我想在UILabel上添加红点,但我找不到解决方案如何做到这一点,我希望输出如下 我已经检查了许多解决方案,但所有如果为UIButton,但我需要在UILabel上实现 我已经提到 除了请帮我试试这个,还有谁能找到解决办法吗 func addlabelBadge(label:UILabel,text:String,fontSize:CGFloat = 17.0) { let size: CGSize = text.size(withAttrib

您好,我正在创建swift应用程序,我想在UILabel上添加红点,但我找不到解决方案如何做到这一点,我希望输出如下

我已经检查了许多解决方案,但所有如果为UIButton,但我需要在UILabel上实现 我已经提到

除了请帮我试试这个,还有谁能找到解决办法吗

func addlabelBadge(label:UILabel,text:String,fontSize:CGFloat = 17.0) {
        let size: CGSize = text.size(withAttributes: [.font: UIFont.systemFont(ofSize: fontSize)])
        let point = CGPoint(x: size.width, y: 0)

        let circle = CAShapeLayer()
        let path = UIBezierPath(arcCenter: CGPoint(x: point.x+5, y: 10), radius: 5, startAngle: 0, endAngle: .pi*2, clockwise: true)
        circle.path = path.cgPath
        circle.fillColor = UIColor.red.cgColor
        label.layer.addSublayer(circle)
    }
在viewDidLayoutSubviews调用此函数

或者点击按钮调用此函数

@objc func didClickedMyButton(){
        addlabelBadge(label: myLabel,text:"Badges")
        view.layoutIfNeeded()
}
您可以删除点调用

myLabel.layer.sublayers?.removeAll()
view.layoutIfNeeded()

你能分享你的代码吗?我们需要知道您在创建UILabel子类并创建自己的布局之前做了什么。基本上创建一个从UILabel继承的Swift文件,并使用代码添加可视元素,或者将其放在.xib文件中。如果您不熟悉编写代码布局,请使用界面生成器制作标签。谢谢!这对我很有帮助,但是我想要红色的做在最后一个字母后面,比如徽章,而不是我想要e后面的点,如果现在我把徽章换成徽章,而不是我想要s后面的点,请帮我出来好的,谢谢@David检查更新的答案。你需要计算文本长度并得到一个点,然后你可以用这个点画出点。确保功能字体大小与标签字体大小相匹配。非常感谢您的工作,就像我的魅力一样!
myLabel.layer.sublayers?.removeAll()
view.layoutIfNeeded()