相关疑难解决方法(0)

如何将UITextView的大小调整为其内容?

有没有一种很好的方法来调整a的大小UITextView以符合其内容?比方说我有一个UITextView包含一行文字:

"Hello world"
Run Code Online (Sandbox Code Playgroud)

然后我添加另一行文字:

"Goodbye world"
Run Code Online (Sandbox Code Playgroud)

在Cocoa Touch中是否有一个好方法rect可以保存文本视图中的所有行,以便我可以相应地调整父视图?

再举一个例子,查看日历应用程序中事件的注释字段 - 注意单元格(及其UITextView包含)如何扩展以包含注释字符串中的所有文本行.

cocoa-touch uitextview uikit ios autolayout

512
推荐指数
20
解决办法
37万
查看次数

如何将长NSString拆分成页面

我有一个很长的NSString我想在几页上显示.

但要做到这一点,我需要找出页面上实际适合的文本数量.

[NSString sizeWithFont:...]是不够的,它只会告诉我文本是否适合矩形,如果没有,它会默默地截断字符串,但它不会告诉我它被截断的位置!

我需要知道第一个不适合页面的单词,所以我可以分割字符串并在下一页上绘制它的那一部分.(并重复)

任何想法如何解决这个问题?

到目前为止我唯一的想法就是重复调用sizeWithFont:constrainedToSize:在字符串中我猜测分页符的位置,并分析得到的矩形,但感觉很麻烦和缓慢,我觉得我可能有使其100%准确的其他问题...(因为下降,等等.)

ofc,它必须在公共iOS SDK中可用

回答:

Phew,这是一些毛茸茸的文件.这是我完成的功能作为一个例子,也许它会帮助某人,因为那里没有太多特定于iphone的核心文本示例.

+ (NSArray*) findPageSplits:(NSString*)string size:(CGSize)size font:(UIFont*)font;
{
  NSMutableArray* result = [[NSMutableArray alloc] initWithCapacity:32];
  CTFontRef fnt = CTFontCreateWithName((CFStringRef)font.fontName, font.pointSize,NULL);
  CFAttributedStringRef str = CFAttributedStringCreate(kCFAllocatorDefault, 
                                                       (CFStringRef)string, 
                                                       (CFDictionaryRef)[NSDictionary dictionaryWithObjectsAndKeys:(id)fnt,kCTFontAttributeName,nil]);
  CTFramesetterRef fs = CTFramesetterCreateWithAttributedString(str);
  CFRange r = {0,0};
  CFRange res = {0,0};
  NSInteger str_len = [string length];
  do {
    CTFramesetterSuggestFrameSizeWithConstraints(fs,r, NULL, size, &res);
    r.location += res.length;
    [result addObject:[NSNumber numberWithInt:res.length]];
  } while(r.location < str_len);
//  NSLog(@"%@",result);
  CFRelease(fs);
  CFRelease(str);
  CFRelease(fnt);
  return result;
}  
Run Code Online (Sandbox Code Playgroud)

重要的提示:

您不能将返回的范围或大小与任何UIKit类或字符串绘制函数一起使用!您只能将它与Core Text一起使用,例如创建CTFrame并绘制它.像字距调整这样的细微差别使得无法将Core Text函数与UIKit结合起来. …

iphone nsstring core-text

12
推荐指数
1
解决办法
3127
查看次数

标签 统计

autolayout ×1

cocoa-touch ×1

core-text ×1

ios ×1

iphone ×1

nsstring ×1

uikit ×1

uitextview ×1