如何比较 Swift 中的两点
How to compare two points in Swift
我有一个 UITextView
,其中包含文本和图像。我还有一个 CGPoint
数组,其中包含用户在 UITextFied
中添加的图像坐标。每当 UITextView
中的文本发生变化(添加或删除)时,我都会得到光标的位置,它是一个 CGPoint
对象。
现在我想遍历我的 CGPoint
数组来查找光标位置之后有多少图像,无论是在同一行还是在下面的行。我该怎么做?
非常感谢任何帮助。
当然可以:
var cursor = message.caretRectForPosition(message.selectedTextRange?.end).origin;
for i in 0...emoji1.count-1 {
if ((cursor.x > emoji_pt[i].x) && (cursor.y <= emoji_pt[i].y)) {
continue;
}
else {
//the emoji is after the cursor.
// Return the index and process all images after that index
}
}
处理Y位置
Bool onPreviousLine = (emoji_pt[i].y < cursor.y)
要处理 X 位置(lineHeight
是一个常量,具体取决于您的情况和图像的大小,您可能可以使用一些较低的常量值(例如 1.0
))。
Bool onTheSameLine = abs(Double(emoji_pt[i].y - cursor.y)) < Double(lineHeight / 2)
Bool beforeX = (emoji_pt[i].x < cursor.x)
在一起
if onPreviousLine || (onTheSameLine && beforeX) {
continue
}
我有一个 UITextView
,其中包含文本和图像。我还有一个 CGPoint
数组,其中包含用户在 UITextFied
中添加的图像坐标。每当 UITextView
中的文本发生变化(添加或删除)时,我都会得到光标的位置,它是一个 CGPoint
对象。
现在我想遍历我的 CGPoint
数组来查找光标位置之后有多少图像,无论是在同一行还是在下面的行。我该怎么做?
非常感谢任何帮助。
当然可以:
var cursor = message.caretRectForPosition(message.selectedTextRange?.end).origin;
for i in 0...emoji1.count-1 {
if ((cursor.x > emoji_pt[i].x) && (cursor.y <= emoji_pt[i].y)) {
continue;
}
else {
//the emoji is after the cursor.
// Return the index and process all images after that index
}
}
处理Y位置
Bool onPreviousLine = (emoji_pt[i].y < cursor.y)
要处理 X 位置(lineHeight
是一个常量,具体取决于您的情况和图像的大小,您可能可以使用一些较低的常量值(例如 1.0
))。
Bool onTheSameLine = abs(Double(emoji_pt[i].y - cursor.y)) < Double(lineHeight / 2)
Bool beforeX = (emoji_pt[i].x < cursor.x)
在一起
if onPreviousLine || (onTheSameLine && beforeX) {
continue
}