关于UIFont和计算字符串的高度和宽度

转自:http://i.cnblogs.com/EditPosts.aspx?opt=1

1、创建方法:
+ fontWithName:size:
- fontWithSize:
2、创建系统字体:
+ systemFontOfSize:
+ boldSystemFontOfSize:
+ italicSystemFontOfSize:
3、获得可用的Font Names:
+ familyNames
+ fontNamesForFamilyName:
4、获得Font Name属性:
familyName 属性 和 fontName属性
5、获得Font Metrics:
pointSize属性:
ascender属性:基准线以上的最高y坐标。
descender属性:基准线以下的最低y坐标
capHeight属性:The receiver’s cap height information 接收者的大写高度信息??
xHeight属性:返回小写x的高度
lineHeight属性:文本行的高度
6、获得系统字体信息:
+ labelFontSize:
+ buttonFontSize:
+ smallSystemFontSize:
+ systemFontSize:

所以,一般来说要用UILabel显示文本内容,而计算高度的话,使用font.lineHeight*行数就可以了。当然这需要每一行的长度不能超过label的长度。
如果这仍然难以控制,可以使用string的
– sizeWithFont:  
– sizeWithFont:forWidth:lineBreakMode:  
– sizeWithFont:constrainedToSize:  
– sizeWithFont:constrainedToSize:lineBreakMode:  
– sizeWithFont:minFontSize:actualFontSize:forWidth:lineBreakMode:
这些方法来测量字符串所占的CGSize。
通过– sizeWithFont:constrainedToSize:lineBreakMode:  这个可以方法,可以指定一个比较大的constrainedSize,来计算字符串的实际高度,例如:

然后计算Label的实际行数,以决定Label的高度:
    UILabel *label1=[[UILabel alloc]initWithFrame:CGRectMake(0, 200, 200, 1)];
    [email protected]"我会根据字符串的长度计算行数,并动态设置label1的高度!不信就试试看看?\r\n好的,让我们来看看吧!!!!!!!!!!!!!!!!!";
    label1.lineBreakMode=UILineBreakModeCharacterWrap;
    label1.numberOfLines=0;

    CGRect rect=label1.frame;
    CGSize testSize=tempRect.size;
    testSize.height=testSize.height*1000;
    tempRect.size=[[label1 text] sizeWithFont:label1.font constrainedToSize:testSize lineBreakMode:NSLineBreakByCharWrapping]; 
    label1.frame=rect;

时间: 2024-10-08 14:02:09

关于UIFont和计算字符串的高度和宽度的相关文章

简单计算字符串的高度

计算字符串的高度有很多种,这里写下最常用的简单计算字符串的高度 // // NSString+NSStringExt.h // UIFontSize // // Created by mac on 15/11/14. // Copyright (c) 2015年 叶炯. All rights reserved. // #import <Foundation/Foundation.h> #import <UIKit/UIKit.h> @interface NSString (NSSt

计算字符串的高度

extension String { ////// /// @brief 获取字符串的高度 /// @param fontSize 字体大小 /// @param width 限制一行显示的宽度 /// @return 返回文本在width宽度的条件下的总高度 /// func height(let fontSize: CGFloat, let width: CGFloat) ->CGFloat { let font = UIFont.systemFontOfSize(fontSize) let

根据字符串长度,计算字符串的高度

CGSize rect1; rect1 = [string boundingRectWithSize:CGSizeMake(kDeviceWidth-40, 20000.f) options:NSStringDrawingUsesLineFragmentOrigin |NSStringDrawingUsesFontLeading attributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIFont systemFontOfSize:15.f]

计算文字的高度和宽度--以微博会话界面中用户名为例

所用方法 // NOTE: All of the following methods will default to drawing on a baseline, limiting drawing to a single line. // To correctly draw and size multi-line text, pass NSStringDrawingUsesLineFragmentOrigin in the options parameter. @interface NSStri

计算文字的高度和宽度--以微博会话界面中用户名(userName)为例

所用方法 // NOTE: All of the following methods will default to drawing on a baseline, limiting drawing to a single line. // To correctly draw and size multi-line text, pass NSStringDrawingUsesLineFragmentOrigin in the options parameter. @interface NSStri

iOS计算字符串的宽度高度

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

计算字符串高度宽度

//计算字符串宽度: + (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 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

计算字符串的长度值

当字符串长度未知,需要动态设置一个UI控件的高度和宽度(比如一个UILabel),这时需要计算字符串的长度 //两个重要参数,一个是最大的宽度,一个是字体的font值 //返回的CGRect 对象,包括宽度和高度值 /* 计算item高度 */ -(CGFloat)calculateItemStringLength:(NSString*)title{ // NSStringDrawingOptions options = NSStringDrawingUsesLineFragmentOrigin