У меня есть метка с предложением в ней, то есть одна строка. Мне нужно получить координату x для определенного слова в строке. Например, если у меня есть предложение, в котором говорится: «Собака побежала» внутри предложения, мне нужно найти координаты x и y, а также ширину и высоту, чтобы поместить UITextField над ним. Вот мой код:Как получить координату X слова внутри NSString
- (void)insertTextFields:(NSString *)string inLabel:(UILabel *)label
{
CGFloat stringWidth = [self getWidthOfString:string inLabel:label];
CGFloat stringHeight = label.bounds.size.height;
CGFloat stringYOrigin = label.bounds.origin.y;
CGFloat stringXOrigin = [self getXOriginOfString:string fromString:label.text inLabel:label];
CGRect textFieldRect = CGRectMake(stringXOrigin, stringYOrigin, stringWidth, stringHeight);
UITextField *textField = [[UITextField alloc] initWithFrame:textFieldRect];
[label addSubview:textField];
}
- (CGFloat)getWidthOfString:(NSString *)string inLabel:(UITextField *)label
{
CGFloat maxWidth = CGRectGetMaxX(label.frame);
CGSize stringSize = [string sizeWithFont:label.font forWidth:maxWidth lineBreakMode:NSLineBreakByCharWrapping];
CGFloat width = stringSize.width;
return width;
}
- (CGFloat)getXOriginOfString:(NSString *)string fromString:(NSString *)sentenceString inLabel:(UILabel *)label
{
CGFloat maxWidth = CGRectGetMaxX(label.frame);
CGSize sentenceStringSize = [sentenceString sizeWithFont:label.font forWidth:maxWidth lineBreakMode:NSLineBreakByWordWrapping];
CGSize stringSize = [string sizeWithFont:label.font forWidth:maxWidth lineBreakMode:NSLineBreakByWordWrapping];
//I have the width of both the individual word and the sentence
//now I need to find the X coordinate for the individual word inside of the sentence string
return xOrigin;
}
Может ли кто-нибудь сказать мне, что мне нужно сделать, чтобы исправить это?
Вычисление позиций глифов - сложная задача. Наборщик может решить разместить начало слова в другой позиции, увидев всю строку. Такой подход может работать в некоторых ситуациях, но нарушать другие. –
Я внес некоторые изменения в код, и он работает! Спасибо за помощь. –
Рад слышать. Что вы изменили? ... поэтому будущим читателям может помочь. – danh