相关疑难解决方法(0)

如何根据图形宽度截断NSString?

在UILabel中,有使用不同截断技术(UILineBreakMode)截断标签的功能.在NSString UIKit Additions中,绘制字符串有类似的功能.

但是,我发现无法访问实际的截断字符串.有没有其他方法可以根据给定字体的(图形)宽度获取截断的字符串?

我希望用这种方法在NSString上有一个类别:

-(NSString*)stringByTruncatingStringWithFont:(UIFont *)font forWidth:(CGFloat)width lineBreakMode:(UILineBreakMode)lineBreakMode
Run Code Online (Sandbox Code Playgroud)

iphone cocoa-touch objective-c nsstring ios

6
推荐指数
2
解决办法
3081
查看次数

如何计算(不搜索)字体大小以适合矩形?

我希望我的文本适合特定的矩形,所以我需要一些东西来确定字体大小. 问题已经在一定程度上解决了这个问题,但是它们会进行搜索,这看起来非常低效,特别是如果您希望能够在实时拖动调整大小期间进行计算.以下示例可以改进为二进制搜索并通过约束到高度,但它仍然是搜索.而不是搜索,我如何计算适合矩形的字体大小?

#define kMaxFontSize    10000

- (CGFloat)fontSizeForAreaSize:(NSSize)areaSize withString:(NSString *)stringToSize usingFont:(NSString *)fontName;
{
    NSFont * displayFont = nil;
    NSSize stringSize = NSZeroSize;
    NSMutableDictionary * fontAttributes = [[NSMutableDictionary alloc] init];

    if (areaSize.width == 0.0 && areaSize.height == 0.0)
        return 0.0;

    NSUInteger fontLoop = 0;
    for (fontLoop = 1; fontLoop <= kMaxFontSize; fontLoop++) {
        displayFont = [[NSFontManager sharedFontManager] convertWeight:YES ofFont:[NSFont fontWithName:fontName size:fontLoop]];
        [fontAttributes setObject:displayFont forKey:NSFontAttributeName];
        stringSize = [stringToSize sizeWithAttributes:fontAttributes];

        if (stringSize.width > areaSize.width)
            break;
        if (stringSize.height > areaSize.height) …
Run Code Online (Sandbox Code Playgroud)

cocoa nstextfield

4
推荐指数
1
解决办法
3098
查看次数

标签 统计

cocoa ×1

cocoa-touch ×1

ios ×1

iphone ×1

nsstring ×1

nstextfield ×1

objective-c ×1