前提・実現したいこと
Swiftで角丸ラベルに袋文字を表示しようとしています。
https://qiita.com/bu-ka/items/afda427e8dbe03e8e3a2を参考にCGContextを使用して実現しようとしています。
発生している問題・エラーメッセージ
袋文字は表示できたのですが、ラベルの背景の角丸がとれて四角になってしまいます。borderは角丸の状態です。
該当のソースコード
swift
1class DecorateLabel: UILabel { 2 3 var strokeColor = .black 4 var strokeSize:CGFloat = 5.0 5 6 override func drawText(in rect: CGRect) { 7 if let context = UIGraphicsGetCurrentContext() { 8 let textColor = self.textColor 9 10 context.setLineWidth(self.strokeSize) 11 context.setLineJoin(CGLineJoin.round) 12 context.setTextDrawingMode(.stroke) 13 self.textColor = self.strokeColor 14 super.drawText(in: rect) 15 16 context.setTextDrawingMode(.fill) 17 self.textColor = textColor 18 } 19 super.drawText(in: rect) 20 } 21}
呼出し側
swift
1let label = DecorateLabel() 2label.frame = CGRect(x: 10, y: 10, width: 200, height: 50) 3label.textColor = .white 4label.text = "ラベル" 5label.backgroundColor = .blue 6label.layer.cornerRadius = 6.0 7layer.borderColor = .red 8layer.borderWidth = 2.0 9label.clipsToBounds = true
試したこと
Swift初心者でどう対応していいかがわかりません。
上記のdrawText内で下記を追加してみたりしたのですが結果は変わりませんでした
swift
1let path = UIBezierPath(roundedRect: self.bounds, cornerRadius: 6.0)) 2let mask = CAShapeLayer() 3mask.path = path.cgPath 4self.layer.mask = mask
補足情報(FW/ツールのバージョンなど)
swift 5.1.2
xcode 11.2
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。