相关疑难解决方法(0)

如何在UILabel中找到文本子字符串的CGRect?

对于给定的NSRange,我想找到一个CGRectUILabel对应的的字形NSRange.例如,我想CGRect在"快速的棕色狐狸跳过懒狗"这句话中找到包含"狗"字样的字样.

问题的视觉描述

诀窍是,UILabel有多行,而文本确实attributedText如此,所以找到字符串的确切位置有点困难.

我想在我的UILabel子类上写的方法看起来像这样:

 - (CGRect)rectForSubstringWithRange:(NSRange)range;
Run Code Online (Sandbox Code Playgroud)

细节,对于有兴趣的人:

我的目标是能够创建一个具有UILabel的确切外观和位置的新UILabel,然后我可以制作动画.我已经把剩下的事情搞清楚了,但特别是这一步让我暂时退缩了.

到目前为止我尝试解决问题的方法是:

  • 我希望在iOS 7中,有一些Text Kit可以解决这个问题,但是我用Text Kit看到的大多数例子都集中在UITextViewUITextField而不是UILabel.
  • 我在这里看到了有关Stack Overflow的另一个问题,它承诺解决问题,但是已接受的答案已经超过两年了,并且代码在属性文本中表现不佳.

我敢打赌,对此的正确答案涉及以下其中一项:

  • 使用标准的Text Kit方法在一行代码中解决此问题.我打赌它会涉及NSLayoutManagertextContainerForGlyphAtIndex:effectiveRange
  • 编写一个复杂的方法,将UILabel分成几行,并在一行中找到一个字形的矩形,可能使用Core Text方法.我目前最好的选择是拆开@mattt优秀的TTTAttributedLabel,它有一个方法可以在一个点上找到一个字形 - 如果我将其反转,并找到一个可能有效的字形点.

更新:这是一个github要点,我已经尝试了迄今为止解决这个问题的三件事:https://gist.github.com/bryanjclark/7036101

uilabel ios ios7 textkit

69
推荐指数
4
解决办法
2万
查看次数

当-adjustsFontSizeToFitWidth设置为YES时,如何计算UILabel的字体大小?

myLabel.adjustsFontSizeToFitWidth = YES,UILabel将自动调整字体大小,以防文本对于标签太长.例如,如果我的标签仅仅是100像素宽,我的文字太长,以适应当前的字体大小,直到文本适合的标签,它就会减少下来的字体大小.

当字体缩小时,我需要从UILabel获取实际显示的字体大小.例如,假设我的字体大小实际上是20,但UILabel不得不将其缩小到10.当我向UILabel询问字体和字体大小时,我得到的是旧字体大小(20),但不是显示的字体大小(10).

iphone cocoa-touch uikit uilabel

25
推荐指数
1
解决办法
1万
查看次数

如何获得UILabel(UITextView)自动调整字体大小?

自动调整后是否可以获得最终字体大小?(属性adjustsFontSizeToFitWidth设置为YES,文本字体大小正在缩小以适合标签)

我在UILabel中继承了drawTextInRect以在文本上放置渐变,但是渐变大小需要与字体的大小相同.我无法获得适当大小的调整字体......它甚至可能吗?

  //draw gradient

    CGContextSaveGState(myContext);
        CGGradientRef glossGradient;
        CGColorSpaceRef rgbColorspace;
        size_t num_locations = 2;
        CGFloat locations[2] = { 0.0, 1.0 };
        CGFloat components[8] = { 1, 1, 1, 0.25,  // BOTTOM color
            1, 1, 1, 0.12 }; // UPPER color

    //scale and translate so that text would not be rotated 180 deg wrong
        CGContextTranslateCTM(myContext, 0, rect.size.height);
        CGContextScaleCTM(myContext, 1.0, -1.0);

//create mask
        CGImageRef alphaMask = CGBitmapContextCreateImage(myContext);
        CGContextClipToMask(myContext, rect, alphaMask);

        rgbColorspace = CGColorSpaceCreateDeviceRGB();
        glossGradient = CGGradientCreateWithColorComponents(rgbColorspace, components, locations, num_locations);

    //gradient should be sized …
Run Code Online (Sandbox Code Playgroud)

iphone

21
推荐指数
1
解决办法
1万
查看次数

如果在iOS 7中adjustsFontSizeToFitWidth为YES时如何从UILabel获取调整后的字体大小?

我有一个设置的标签,adjustsFontSizeToFitWidth = YES我需要获得实际显示的字体大小.

现在,iOS 7弃用了之前有效的所有方法,所有关于SO的问题建议使用这些弃用的方法.

一旦我被SO允许,我就会把这个问题作为赏金.请不要关闭.

nsstring uikit uilabel ios textkit

13
推荐指数
1
解决办法
2589
查看次数

如何计算iOS 7中的实际字体点大小(不是边界矩形)?

编辑:链接的"重复"问题仅涉及计算文本矩形.我需要在标签缩放后计算实际字体大小,而不是字符串大小.

现在不推荐使用此方法:

size = [self sizeWithFont:font // 20
              minFontSize:minFontSize // 14
           actualFontSize:&actualFontSize // 16
                 forWidth:maxWidth
            lineBreakMode:self.lineBreakMode];
Run Code Online (Sandbox Code Playgroud)

现在在iOS 7中缩小文本大小以适应时,如何计算UILabel的字体大小?

iphone objective-c ios ios7

10
推荐指数
4
解决办法
9953
查看次数

标签 统计

ios ×3

iphone ×3

uilabel ×3

ios7 ×2

textkit ×2

uikit ×2

cocoa-touch ×1

nsstring ×1

objective-c ×1