在HTML中,您可以创建一个带有红色轮廓(或虚线轮廓)的段落。
http://www.w3schools.com/cssref/tryit.asp?filename=trycss_outline
我想知道是否可以使用NSAttributedStrings做类似的事情。我不是要勾勒出每个字符的轮廓,而是要把整个块放在一个盒子里面,那个盒子会有一个边框。 NSAttributedString甚至CoreText是否可能?
我已经看到了这个(How to draw a border around a paragraph in UILabel?)解决方案,但是我不想在文本顶部添加一个层,我希望它是文本的一部分。
最佳答案
听起来您会想要带有某些自定义图形的UITextView
子类。这是应该可以解决问题的游乐场代码。您可以调整细节以使其看起来像您喜欢的样子,但这是基本思想。
这是我经常使用的自定义绘图的备忘单:
http://www.techotopia.com/index.php/An_iOS_7_Graphics_Tutorial_using_Core_Graphics_and_Core_Image
import UIKit
import XCPlayground
let container = UIView(frame: CGRect(x: 0, y: 0, width: 500, height: 500))
container.backgroundColor = UIColor(white: 0.95, alpha: 1.0 )
XCPShowView( "Container", container )
class DottedTextView: UITextView {
override func drawRect(rect: CGRect) {
let context = UIGraphicsGetCurrentContext()
CGContextSetLineWidth( context, 20.0 )
CGContextSetStrokeColorWithColor(context, UIColor.redColor().CGColor)
let dashArray: [CGFloat] = [ 6, 4 ]
CGContextSetLineDash( context, 3, dashArray, dashArray.count )
CGContextStrokeRect( context, rect )
}
}
let textView = DottedTextView(frame: CGRect(x: 20, y: 20, width: 300, height: 200) )
container.addSubview( textView )
textView.text = "Bacon ipsum dolor amet ball tip kielbasa brisket drumstick pastrami pork chicken shankle. Ribeye cow doner shankle, alcatra pork chop flank corned beef t-bone shoulder prosciutto."