zl程序教程

您现在的位置是:首页 >  大数据

当前栏目

iOS7中计算UILabel中字符串的高度

计算 字符串 高度 IOS7 UILabel
2023-09-14 08:57:58 时间

iOS7中计算UILabel中字符串的高度

iOS7中出现了新的方法计算UILabel中根据给定的Font以及str计算UILabel的frameSize的方法.本人提供category如下:

UILabel+StringFrame.h

//

// UILabel+StringFrame.h

// LabelHeight

// Copyright (c) 2014年 Y.X. All rights reserved.

#import UIKit/UIKit.h 

@interface UILabel (StringFrame)

- (CGSize)boundingRectWithSize:(CGSize)size;

@end

UILabel+StringFrame.m
//

// UILabel+StringFrame.m

// LabelHeight

// Copyright (c) 2014年 Y.X. All rights reserved.

#import "UILabel+StringFrame.h"

@implementation UILabel (StringFrame)

- (CGSize)boundingRectWithSize:(CGSize)size

 NSDictionary *attribute = @{NSFontAttributeName: self.font};

 CGSize retSize = [self.text boundingRectWithSize:size

 options:\

 NSStringDrawingTruncatesLastVisibleLine |

 NSStringDrawingUsesLineFragmentOrigin |

 NSStringDrawingUsesFontLeading

 attributes:attribute

 context:nil].size;

 return retSize;



现在来测试代码:

效果图如下:

我们来试验一下使用自定义字体测试一回:

显示结果:

无论自定义字体还是系统字体都是可以完美使用的.

 

以下代码供你测试:

// 字符串

 NSString *str = @"日落时分,沏上一杯山茶,听一曲意境空远的《禅》,心神随此天籁,沉溺于玄妙的幻境里。仿佛我就是那穿梭于葳蕤山林中的一只飞鸟,时而盘旋穿梭,时而引吭高歌;仿佛我就是那潺潺流泻于山涧的一汪清泉,涟漪轻盈,浩淼长流;仿佛我就是那竦峙在天地间的一座山峦,伟岸高耸,从容绵延。我不相信佛,只是喜欢玄冥空灵的梵音经贝,与慈悲淡然的佛境禅心,在清欢中,从容幽静,自在安然。一直向往走进青的山,碧的水,体悟山水的绚丽多姿,领略草木的兴衰荣枯,倾听黄天厚土之声,探寻宇宙自然的妙趣。走进了山水,也就走出了喧嚣,给身心以清凉,给精神以沉淀,给灵魂以升华。";

 // 初始化label

 UILabel *label = [UILabel new];

 label.backgroundColor = [UIColor whiteColor];

 [self.view addSubview:label];

 // label获取字符串

 label.text = str;


// 根据获取到的字符串以及字体计算label需要的size CGSize size = [label boundingRectWithSize:CGSizeMake(320, 0)]; // 设置无限换行 label.numberOfLines = 0; // 设置label的frame label.frame = CGRectMake(0.0f, 50.0f, size.width, size.height);

iOS6可以使用如下方式来获取字符串的size值

        size = [text sizeWithFont:font
                  constrainedToSize:size
                       lineBreakMode:NSLineBreakByCharWrapping];

 但此方法已经在iOS7中被废弃了,注意.

 

 

 

//  获取字符串的大小  ios7

 

- (CGSize)getStringRect:(NSString*)aString

{

    CGSize size;

    

    NSAttributedString* atrString = [[NSAttributedStringalloc] initWithString:aString];

    

    NSRange range = NSMakeRange(0, atrString.length);

    

    NSDictionary* dic = [atrString attributesAtIndex:0 effectiveRange: range];

    

    size = [aString boundingRectWithSize:CGSizeMake(237, 200)  options:NSStringDrawingUsesLineFragmentOriginattributes:dic context:nil].size;

    

    return  size;

    

}

 

 

//  获取字符串的大小  ios6

- (CGSize)getStringRect_:(NSString*)aString

{

    CGSize size;

    

    UIFont *nameFont=[UIFont fontWithName:@"Helvetica" size:13];

    size=[aString sizeWithFont:nameFont constrainedToSize:CGSizeMake(237, 200) lineBreakMode:NSLineBreakByCharWrapping];

    return  size;

}

 

 


iOS - UILabel NS_CLASS_AVAILABLE_IOS(2_0) @interface UILabel : UIView @available(iOS 2.0, *) public class UILabel : UIView, NSCoding 实际上 label 就是一个可以显示文字的视图控件。
[ios开发]-APP-上架流程 由于苹果的机制,在非越狱机器上安装必须通过官方的Appstore, 开发者开发好应用后上传Appstore,也需要通过审核等环节。 AppCan作为一个跨主流平台的一个开发平台,也对ipa包上传Appstore作了支持。 本文从三个流程来介绍如何实现AppCan在 线编译出ipa包,以及上传到苹果Appstore。