如何比较Swift中的两点

时间:2015-02-09 09:51:57

标签: ios swift compare cgpoint

我有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
        }
    }

1 个答案:

答案 0 :(得分:1)

处理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
}