IOS 计算UILable字符串高度

IOS7 之前

截取了部分

@interface ZGViewCell ()

@property (nonatomic, strong) UILabel *nameLable;

@end

- (UILabel *)nameLable{

if (_nameLable == nil) {

_nameLable = [[UILabel alloc] init];

[self.contentView addSubview:_nameLable];

// _nameLable.backgroundColor = [UIColor redColor];

// 默认字体是17,会出现 ”···“

_nameLable.font = [UIFont fontWithName:@"Arial" size:14];

}

return _nameLable;

}

// 位置

- (void)settingFrame{

CGFloat padding = 10;

// 图标

CGFloat iconX = padding;

CGFloat iconY = padding;

CGFloat iconW = 30;

CGFloat iconH = 30;

self.iconImage.frame = CGRectMake(iconX, iconY, iconW, iconH);

// 姓名

UIFont *nameFont = [UIFont fontWithName:@"Arial" size:14.0f];

CGSize nameFrame = [self.statuses.name sizeWithFont:nameFont constrainedToSize:CGSizeMake(MAXFLOAT, MAXFLOAT) lineBreakMode:NSLineBreakByWordWrapping];

CGFloat nameX = CGRectGetMaxX(self.iconImage.frame) + padding;

CGFloat nameY = (self.iconImage.frame.size.height - nameFrame.height) * 0.5 + padding;

self.nameLable.frame = CGRectMake(nameX, nameY, nameFrame.width, nameFrame.height);

}

IOS 7 苹果在UIStringDrawing.h中增加了很多方法

与上面对应的

/** boundingRectWithSize计算给定文本字符串所占的区域

  返回值是一个x,y = 0的CGRect

  如果要计算多行的准确高度,需要传入NSStringDrawingUsesLineFragmentOrigin选项

  dict用于指定字体的相关属性的字典,UIKit框架中的第一个头文件

*/

// 位置

- (void)settingFrame{

NSDictionary *nameDict = @{NSFontAttributeName: [UIFont systemFontOfSize:14]};

CGRect nameFrame= [str boundingRectWithSize:CGSizeMake(MAXFLOAT, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:nameDict context:nil];

nameFrame.origin.x = CGRectGetMaxX(self.iconImage.frame) + padding;

nameFrame.origin.y = (self.iconImage.frame.size.height - nameFrame.height) * 0.5 + padding;

self.nameLable.frame = nameFrame;

}

时间: 2024-08-27 01:29:37

IOS 计算UILable字符串高度的相关文章

IOS7中动态计算UILable的高度

.h文件 #import <UIKit/UIKit.h> @interface UILabel (ContentSize) - (CGSize)contentSize; @end .m文件 #import "UILabel+ContentSize.h" @implementation UILabel (ContentSize) - (CGSize)contentSize { NSMutableParagraphStyle * paragraphStyle = [[NSMut

swift UILabel多行显示时 计算UILable的高度(可用于UILable高度自适应)

代码如下 func heightForView(text:String, font:UIFont, width:CGFloat) -> CGFloat{ let label:UILabel = UILabel(frame: CGRect(x: 0, y: 0, width: width, height: CGFloat.greatestFiniteMagnitude)) label.numberOfLines = 0 label.lineBreakMode = NSLineBreakMode.b

ios计算内容的高度 (含7.0前及以后的版本的用法)

+ (CGFloat)heightForContent:(MyMsgTextModel *)content withWidth:(CGFloat)width { CGSize contentSize; if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0")) { NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc]init]; paragrap

iOS 计算label的高度

+ (CGFloat)labelHeight:(UILabel *)label lines:(NSInteger)lines { NSRange range = NSMakeRange(0, label.attributedText.length); NSDictionary *dic = [label.attributedText attributesAtIndex:0 effectiveRange:&range]; CGSize size = CGSizeMake(label.bounds.

iOS 7 计算字符串高度

- (float)width:(NSString *)str font:(UIFont *)font { NSDictionary *attribute = @{NSFontAttributeName:font}; CGSize size = [str boundingRectWithSize:CGSizeMake(_bgView.frame.size.width - 2*MARGIN_TOP, CGFLOAT_MAX) options: NSStringDrawingTruncatesLast

iOS计算字符串的宽度高度

OC开发中会遇到根据字符串和字体大小来算计算出字符串所占的宽高->> 封装方法如下: #import <Foundation/Foundation.h> #import <UIKit/UIKit.h> @interface XSDKResourceUtil : NSObject //获取字符串宽 +(CGSize)measureSinglelineStringSize:(NSString*)str andFont:(UIFont*)wordFont; //获取字符串宽

iOS开发动态计算cell的高度

在iOS开发过程中,我们经常会用到UITableView, 谈到UITableView当然少不了UITableViewCell.那么有时候我们就会有疑惑,怎么样才能让cell的高度根据文字的大小多少,以及照片的高度来动态设计呢? 下面我们来看一下,到底怎么做才能让cell的高度动态变化,让界面看起来更美观协调一些呢? //动态设置cell的高度 + (CGFloat)heightForRowWithModel:(PhotoInfo *)photoInfo { //1.图片的高度 //让图片等比例

计算字符串高度宽度

//计算字符串宽度: + (CGFloat)width:(NSString *)contentString heightOfFatherView:(CGFloat)height textFont:(UIFont *)font{ #if __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_7_0 CGSize size = [contentString sizeWithFont:font constrainedToSize:CGSizeMake(CGFLOAT_

ios 计算label宽度(高度)出错在iPhone5s、iphone6上出错

今天使用Label的时候,需要计算UILabel的高度,发现在4,4s上显示正常,在iPhone5s.iphone6上显示出错 使用的方法为: NSString *teacherComment = @"评语是写给学生看的,所以一方面评语要使用学生能看得懂的英语来写,所使用的词汇和语法不能过高或过低于学生的现有水平,要切合学生的实际水平,符合学生的个性心理..."; float commentHeight = 0.0; if ([teacherComment isEqual:@"