我有一个带有句子的标签,即一个字符串。 我需要获取字符串中特定单词的x坐标。 因此,例如,如果我在句子中说“狗跑了”,那么我需要能够找到x和y坐标,以及在其上放置UITextField的宽度和高度。 到目前为止,这是我的代码:

- (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;
}

有人可以告诉我该怎么做才能解决此问题?

===============>>#1 票数:1 已采纳

那是单词开头的x位置吗? 只需测量单词前面的字符串即可。

- (CGFloat)getXOriginOfString:(NSString *)string fromString:(NSString *)sentenceString inLabel:(UILabel *)label {

    CGFloat maxWidth = CGRectGetMaxX(label.frame);
    NSRange range = [sentenceString rangeOfString:string];
    NSString *prefix = [sentenceString substringToIndex:range.location];

    return [prefix sizeWithFont:label.font
                       forWidth:maxWidth
                  lineBreakMode:NSLineBreakByWordWrapping].width;
}

单词的结尾将是此结果+您发布的代码中的stringSize 还是我误会了这个问题?

  ask by Chandler De Angelis translate from so

未解决问题?本站智能推荐:

2回复

在NSString中显示时,如何使CGFloat值更短?

我是Objective-C的新手。 我想在NSString中显示较短的CGFloat值。 我知道在C语言中很容易。 但是我不知道如何在Objective-c中做到这一点。 例如, 它将显示33.3333%。 但我想使它达到33.33%。 我该怎么做?
1回复

为什么CGPointEqualToPoint只是执行(px == px && py == py)?

由于比较浮点数是一个如此困难和争论的问题,我很惊讶地看到CGPointEqualToPoint和其他CG比较方法只是这样做: 在某些情况下,这不会导致问题吗? 或者Objective-C是否与fabs,epsilon以及所有这些进行内置的浮点比较? 我想知道为什么开发人员选择在这里使
2回复

如何在目标c中创建一系列CGFloats?

所以我正在开发一款简单的iPhone游戏,并试图制作一张本地高分榜。 我想制作一个数组并将最高分数推入其中。 以下是我到目前为止的代码: 问题是highscores是一个NSMutableArray,它只能存储对象。 所以这是我的问题,在阵列中存储CGFloats的最佳方法是什么?
1回复

如何在视图右侧设置气球图像?

语境: 我正在构建一个聊天应用程序,我使用了来自apple sample的代码。 它看起来与本机消息应用程序完全相同。 我的问题出在我正在实施的iPad版本上。 这是一张图片: 正如你在图像中看到的那样,我需要将右边的气球放在屏幕的右边缘 我跟踪代码,并缩小需要
1回复

如何检查Objective-C(iOS)中的NaN值[重复]

可能重复: Objective-C - 浮动检查nan 确定NSNumber是否为NaN 我在CGFloat中遇到NaN值问题,如何检查数字是否有效? 到目前为止唯一有效的方法是: 这根本不是一个好的解决方案! :) ...而且我很确定我应该做的其他事情。
1回复

在app代理中存储浮动

我在我的app委托中存储了一些浮点数,然后在app委托的.m中合成它。 现在,当我在一个视图控制器中使用该浮动时,我这样做: (ItLoad和FacilititesLoad都是存储在我的代表中的浮动) 现在在下一个控制器中我做同样的事情: 这总是返回inf为什么会这样
3回复

试图在NSInteger中存储浮点数(或了解如何将其存储在其他东西中)

我正在尝试将屏幕的高度存储在NSInteger中 。 我也尝试将其存储在NSString和NSNumber中 ,但是始终会出现一个错误,提示使用不兼容类型'CGFloat'(aka'float')*的表达式初始化'NSInteger '( aka'int *')。 我将回去从稍后在代码
1回复

CGFloat初始化中的类型不兼容

有人在这看到问题吗?
2回复

在循环中找到CGFloat中的最小值

我正在根据从循环变量事件获得的参数在循环中绘制reactangles,如下所示: 在每个循环中, minutesSinceEvent和durationInMinutes更改,因此每次都会绘制一个不同的反应角。 我想在循环中获得最低的y值,并在循环中获得最大的高度。 简而言之,我想
2回复

在Objective-C中是否使用带有或不带有后缀.f的CGFloat进行性能差异

我应该用postfix f写CGFloat值吗? 与 我知道这个后缀定义了一个浮点值。 但它是否有必要,是否有意义,使用这两者之间是否有任何性能差异,或者这只是视觉呈现,因此您可以快速定义值类型(例如,在这种情况下浮动)?