- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
无论如何我可以检测到 NSMutableAttributedString
上的点击。我有一张森伯斯特图表。单击每个元素时,我想显示一个警报并将该值保存在 Core Data
中。现在我只发布了部分代码,因为原始代码太长,难以阅读。我知道我无法在 UIBezierPath
上显示警报,因为它是为一组元素绘制在一起的,所以我别无选择,只能在 NSMutableAttributedString
上显示警报。
override func draw(_ rect: CGRect) {
let context = UIGraphicsGetCurrentContext()!
/// Group 5
do {
context.saveGState()
context.translateBy(x: 337.7, y: 334.39)
context.rotate(by: -1654 * CGFloat.pi/180)
context.translateBy(x: -321.5, y: -318)
/// Group 4
do {
context.saveGState()
/// Group 8
do {
context.saveGState()
context.translateBy(x: 0.35, y: 0.03)
/// Path
let path8 = UIBezierPath()
path8.move(to: CGPoint(x: 0, y: 32.29))
path8.addCurve(to: CGPoint(x: 141.21, y: 0), controlPoint1: CGPoint(x: 42.61, y: 11.61), controlPoint2: CGPoint(x: 90.54, y: 0))
path8.addCurve(to: CGPoint(x: 213.67, y: 8.12), controlPoint1: CGPoint(x: 166.13, y: 0), controlPoint2: CGPoint(x: 190.39, y: 2.81))
path8.addLine(to: CGPoint(x: 196.1, y: 78.67))
path8.addCurve(to: CGPoint(x: 137.83, y: 71.74), controlPoint1: CGPoint(x: 177.42, y: 74.14), controlPoint2: CGPoint(x: 157.9, y: 71.74))
path8.addCurve(to: CGPoint(x: 28.81, y: 97.08), controlPoint1: CGPoint(x: 98.69, y: 71.74), controlPoint2: CGPoint(x: 61.69, y: 80.85))
path8.addLine(to: CGPoint(x: 0, y: 32.29))
path8.close()
context.saveGState()
context.translateBy(x: 179.79, y: 0)
path8.usesEvenOddFillRule = true
UIColor(hue: 0.133, saturation: 0.137, brightness: 1, alpha: 1).setFill()
path8.fill()
path8.lineWidth = 1
UIColor(white: 0.592, alpha: 1).setStroke()
path8.stroke()
context.restoreGState()
/// Path
let path10 = UIBezierPath()
path10.move(to: CGPoint(x: 77.66, y: 347.23))
path10.addLine(to: CGPoint(x: 11.79, y: 310.67))
path10.addCurve(to: CGPoint(x: 44.49, y: 187.63), controlPoint1: CGPoint(x: 32.59, y: 274.44), controlPoint2: CGPoint(x: 44.49, y: 232.43))
path10.addCurve(to: CGPoint(x: 0, y: 46.03), controlPoint1: CGPoint(x: 44.49, y: 134.96), controlPoint2: CGPoint(x: 28.04, y: 86.13))
path10.addLine(to: CGPoint(x: 61.01, y: 0))
path10.addCurve(to: CGPoint(x: 121.96, y: 186.18), controlPoint1: CGPoint(x: 99.35, y: 52.3), controlPoint2: CGPoint(x: 121.96, y: 116.63))
path10.addCurve(to: CGPoint(x: 77.66, y: 347.23), controlPoint1: CGPoint(x: 121.96, y: 244.96), controlPoint2: CGPoint(x: 105.81, y: 300.01))
path10.close()
context.saveGState()
context.translateBy(x: 520.04, y: 131.32)
path10.usesEvenOddFillRule = true
UIColor(hue: 0.582, saturation: 0.882, brightness: 1, alpha: 1).setFill()
path10.fill()
path10.lineWidth = 1
UIColor(white: 0.592, alpha: 1).setStroke()
path10.stroke()
context.restoreGState()
/// Path
let path12 = UIBezierPath()
path12.move(to: CGPoint(x: 202.13, y: 121.2))
path12.addLine(to: CGPoint(x: 141.15, y: 167.21))
path12.addCurve(to: CGPoint(x: 0, y: 70.57), controlPoint1: CGPoint(x: 107.58, y: 119.98), controlPoint2: CGPoint(x: 57.83, y: 85.06))
path12.addLine(to: CGPoint(x: 17.57, y: 0))
path12.addCurve(to: CGPoint(x: 202.13, y: 121.2), controlPoint1: CGPoint(x: 92.8, y: 17.64), controlPoint2: CGPoint(x: 157.78, y: 61.47))
path12.close()
context.saveGState()
context.translateBy(x: 377.77, y: 8.56)
path12.usesEvenOddFillRule = true
UIColor(hue: 0.208, saturation: 0.328, brightness: 0.91, alpha: 1).setFill()
path12.fill()
path12.lineWidth = 1
UIColor(white: 0.592, alpha: 1).setStroke()
path12.stroke()
context.restoreGState()
context.restoreGState()
}
context.restoreGState()
}
/// Geranium
let geranium = NSMutableAttributedString(string: "Geranium")
geranium.addAttribute(.font, value: UIFont(name: "Helvetica-Bold", size: 10)!, range: NSRange(location: 0, length: geranium.length))
context.saveGState()
context.translateBy(x: 130.07, y: 523.08)
context.rotate(by: 490 * CGFloat.pi/180)
context.translateBy(x: -23.5, y: -6)
geranium.draw(at: CGPoint.zero)
context.restoreGState()
/// Lavender
let lavender = NSMutableAttributedString(string: "Lavender")
lavender.addAttribute(.font, value: UIFont(name: "Helvetica-Bold", size: 10)!, range: NSRange(location: 0, length: lavender.length))
context.saveGState()
context.translateBy(x: 81.5, y: 464.82)
context.rotate(by: 872 * CGFloat.pi/180)
context.translateBy(x: -22.5, y: -6)
lavender.draw(at: CGPoint.zero)
context.restoreGState()
}
}
输出:
最佳答案
您无法检测到绘制 NSAttributedString
上的点击,因为点击是 UIKit
层的抽象,但在矩形中绘制不是。所以你可以使用 hitTest(_:with:)用于点击检测并使用其坐标与 NSAttributedString 的坐标进行比较。
关于ios - Swift-检测点击 NSMutableAttributedString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52645211/
我想将一个 NSMutableAttributedString 中的所有属性复制到一个新的中。我试过的代码是这样的: [attrStr enumerateAttribute:NSFontAttribu
我正在尝试更改应在用户界面中显示的标签的字体。我用过这行: let myAttribute = [ NSFontAttributeName: UIFont(name: "cirth1", size:
我使用 UIlabel 创建了一个 xib 文件。我想为 UILabel 添加行距。我编写了下面的代码,但它不会改变行之间的行间距。 (我尝试使用属性编辑器,但没有解决)有什么问题吗? 该代码适用于其
我有一个带有如下所示字符串的标签。我希望 SecondVariable 具有不同的颜色。我想我明白如何改变颜色。我的问题是获取 secondVariable 的范围。 let str = "\(fir
我制作了一个 NSMutableAttributedString 对象,它由 2 个不同的 NSMutableAttributedString 对象组成: NSMutableAttributedStr
let text = "By accepting you agree to our Terms of Service and Privacy Policy." let attr = NSMutabl
帮助! 崩溃发生在: [emtionString replaceCharactersInRange:range withString:imageAndRangeDicArray[i][@"image"
我在下面有一个方法,我想用它来更改 UILabel 文本的最后 6 个字符的颜色,这将是括号中的日期,即 (1999 )。首先,我设置了 tableViewCell 的文本,然后获取了 attribu
我在设置此 NSMutableAttributedString 时对范围做了一些错误(我认为)。谁能告诉我为什么这会导致我的程序崩溃?在我看来是对的,但我显然错了!谢谢。 NSString *plac
我正在做类似 facebook 的标记功能,我已经可以标记用户了。我可以这样展示。它是由这段代码完成的。 NSMutableAttributedString * string = [[NSMutabl
我只是想知道如何制作 NSMutableAttributedString 的副本。我有一个名为 text 的属性,我想在某个时间点保存它的内容,并在发生某些事情时恢复它。我尝试创建一个名为 textC
以下代码在 iOS 上不断崩溃。请帮我找出这个错误的确切原因。 @try { dispatch_async(dispatch_get_global_que
我正在使用 SplitViewController; master 是带有一系列 RightDetail 单元格的 tableView,其属性字符串是通过值设置弹出窗口的回调设置的。 通过设置单元格
我正在使用两个 NSMutableAttributedString 并从这两个中创建一个 NSMutableAttributedString。我想限制两个 attributedString 的不同最大
我正在尝试设置数组中所有范围的颜色,但出现此错误。我不明白为什么。范围都有效。我什至尝试手动插入一个范围来测试它。谢谢。 CGContextSetFillColorWithColor:无效上下文 0x
我需要用字符串 productDesc 初始化 NsmutableAttributedString,但是代码崩溃 attrStrInfoLabel= [[NSMutableAttributedStr
我们的 iOS 应用程序中有一个简单的标记解析器,它获取带有类似 HTML 标签的文本,并通过遍历简单 NSString 中的每个字符将其转换为 NSAttributedString并生成一个 NSM
这个问题在这里已经有了答案: iOS ttf fonts only partially work (3 个答案) 关闭 5 年前。 这很奇怪。 这个有效: titleLabel.font = UIF
我有一个椭圆形的文本路径。对于填充路径,我使用了 NSMutableAttributedString: UIFont *font = [UIFont fontWithName:@"font name"
更新: 我创建了一个非常简单的独立项目来演示该错误。如果有人想拉同样的东西,看看他们是否能发现我哪里出错了,我一定会很感激。没有太多代码可以浏览。公共(public) repo 在这里: https:
我是一名优秀的程序员,十分优秀!