zoukankan      html  css  js  c++  java
  • iPhone:constrainedToSize获取字符串的宽高 自定义label的高度和宽度

    在使用UILabel存放字符串时,经常需要获取label的长宽数据,本文列出了部分常用的计算方法。

    1.获取宽度,获取字符串不折行单行显示时所需要的长度

    CGSize titleSize = [aString sizeWithFont:font constrainedToSize:CGSizeMake(MAXFLOAT, 30)];

    1. CGSize titleSize = [aString sizeWithFont:font 
    2. constrainedToSize:CGSizeMake(MAXFLOAT, 30)]; 

    注:如果想得到宽度的话,size的width应该设为MAXFLOAT。

    2.获取高度,获取字符串在指定的size内(宽度超过label的宽度则换行)所需的实际高度.

    1. CGSize titleSize = [aString sizeWithFont:font 
    2. constrainedToSize:CGSizeMake(label.frame.size.width, MAXFLOAT) 
    3. lineBreakMode:UILineBreakModeWordWrap]; 

    注:如果想得到高度的话,size的height应该设为MAXFLOAT。

    3.实际编程时,有时需要计算一段文字最后一个字符的位置,并在其后添加图片或其他控件(如info图标),下面代码为计算label中最后一个字符后面一位的位置的方法。

    1. CGSize sz = [label.text sizeWithFont:label.font                     

    2. constrainedToSize:CGSizeMake(MAXFLOAT, 40)]; 

    3. CGSize linesSz = [label.text sizeWithFont:label.font 

    4.                         constrainedToSize:CGSizeMake(label.frame.size.width, MAXFLOAT) 

    5.                             lineBreakMode:UILineBreakModeWordWrap]; 

    6.  

    7. if(sz.width <= linesSz.width) //判断是否折行

    8.     lastPoint = CGPointMake(label.frame.origin.x + sz.width, label.frame.origin.y); 

    9. else 

    10.     lastPoint = CGPointMake(label.frame.origin.x + (int)sz.width % (int)linesSz.width,linesSz.height - sz.height); 

  • 相关阅读:
    SVN服务器搭建(一)
    排序算法二:冒泡排序
    【LeetCode】136. Single Number
    【LeetCode】217. Contains Duplicate
    【LeetCode】189. Rotate Array
    【LeetCode】122. Best Time to Buy and Sell Stock II
    【LeetCode】26. Remove Duplicates from Sorted Array
    【LeetCode】20. Valid Parentheses
    【LeetCode】680. Valid Palindrome II
    【LeetCode】345. Reverse Vowels of a String
  • 原文地址:https://www.cnblogs.com/daguo/p/2225525.html
Copyright © 2011-2022 走看看