NSString固定寬度獲取高度,得到行數(shù)

固定字符串寬度,計算字符串的高度
  • 首先我是創(chuàng)建了NSString的類別NSString+NSStringTools,在類中先聲明宏定義
///判斷字符串是否為空或者為空字符串
#define StringIsNullOrEmpty111(str) (str == nil || [str isEqualToString:@""])

--------------------------------------------------
/**
 *  獲取文本的顯示高度,
 */
+(CGRect)heightForString:(NSString *)str Size:(CGSize)size Font:(UIFont *)font;
+(CGRect)heightForString:(NSString *)str Size:(CGSize)size Font:(UIFont *)font Lines:(NSInteger)lines;
  • 然后在.m文件里編寫方法:
+ (CGRect)heightForString:(NSString *)str Size:(CGSize)size Font:(UIFont *)font
{
    return [NSString heightForString:str Size:size Font:font Lines:0];
}

+ (CGRect)heightForString:(NSString *)str Size:(CGSize)size Font:(UIFont *)font Lines:(NSInteger)lines
{
    if (StringIsNullOrEmpty111(str))
    {
        return CGRectMake(0, 0, 0, 0);
    }
    static UILabel *lbtext;
    if (lbtext == nil)
    {
        lbtext = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, size.width, size.height)];
    }
    else
    {
        lbtext.frame = CGRectMake(0, 0, size.width, size.height);
    }
    lbtext.font = font;
    lbtext.text = str;
    lbtext.numberOfLines = lines;
    CGRect rect = [lbtext textRectForBounds:lbtext.frame limitedToNumberOfLines:lines];
    if(rect.size.height < 0)
    {
        rect.size.height = 0;
    }
    if (rect.size.width < 0)
    {
        rect.size.width = 0;
    }
    return rect;
}
  • 調用方法去判斷字符串所展示的高度
//根據(jù)字符串的高度/一行的高度 = 展示的行數(shù)
-(int)numberRowsString:(NSString *)str size:(CGSize)size font:(UIFont *)font {
    CGFloat height1 = [NSString heightForString:str Size:size Font:font].size.height;
    
    //得到一行的字體高度
    CGFloat height2 = [NSString heightForString:@"測試文字" Size:size Font:font].size.height;
    
    return height1/height2;
}
NSString *tempStr = @"關關雎鳩,在河之洲。窈窕淑女,君子好逑。參差荇菜,左右流之。窈窕淑女,寤寐求之。求之不得,寤寐思服。悠哉悠哉,輾轉反側。參差荇菜,左右采之。窈窕淑女,琴瑟友之。參差荇菜,左右芼之。窈窕淑女,鐘鼓樂之。";
int number = [self numberRowsString: tempStr size:200 , 100000) font:[UIFont systemFontOfSize:11]];

NSLog(@"行數(shù) == %d",number);
  • 輸出出來的結果就是這個字符串在寬度為200的情況下的能展示多少行了
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • *面試心聲:其實這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個offer,總結起來就是把...
    Dove_iOS閱讀 27,624評論 30 472
  • 面試題參考1 : 面試題[http://www.cocoachina.com/ios/20150803/12872...
    江河_ios閱讀 1,816評論 0 4
  • 剛剛“逛了”唯品會,看到很多漂亮的衣服,折后價幾千塊!很有沖動去購買,大腦中突然蹦出來一句話“穿給誰看”,是呀...
    艾La閱讀 153評論 0 1
  • 你觸動歲月的琴弦 讓每一枝花朵 笑出聲音 我只能含羞的閉目 聆聽 你心里的樂章。
    葉雨生閱讀 449評論 0 2
  • 人們會忘記你曾說了什么,人們會忘記你曾做了什么,但是人們永遠不會忘記你讓他們獲得的感受。——瑪雅·安吉羅
    雨下野鬼閱讀 876評論 0 0

友情鏈接更多精彩內容