swift-自动计算字符串的宽高

写一个方法来继承String

//自动控制文字换行及宽度

extension String {

func textSizeWithFont(font: UIFont, constrainedToSize size:CGSize) -> CGSize {

var textSize:CGSize!

if CGSizeEqualToSize(size, CGSizeZero) {

let attributes = NSDictionary(object: font, forKey: NSFontAttributeName)

textSize = self.sizeWithAttributes(attributes as! [String : AnyObject] as [String : AnyObject])

} else {

let option = NSStringDrawingOptions.UsesLineFragmentOrigin

let attributes = NSDictionary(object: font, forKey: NSFontAttributeName)

let stringRect = self.boundingRectWithSize(size, options: option, attributes: attributes as! [String : AnyObject] as [String : AnyObject], context: nil)

textSize = stringRect.size

}

return textSize

}

}

用法:

   let projectText="我是一段字符串,来计算我的高度吧";

let projectSize=sizeWithText(projectText, maxSize: CGSizeMake(150,20), font: UIFont.systemFontOfSize(14));

let comProjectW:CGFloat=projectSize.width;

let comProjectH:CGFloat=projectSize.height;

  //记得要在计算的字符串UILable中加上

  UIlable.font=UIFont.systemFontOfSize(14);

  //显示几行

UIlable.numberOfLines=1;

  

  UIlable.frame = CGRectMake(50, 50, comProjectW, comProjectH);

时间: 2024-11-19 06:29:04

swift-自动计算字符串的宽高的相关文章

iOS 让UIButton根据文字内容自动计算宽高

Xcode自带的UIButton控件是没有办法根据文字内容计算自身的宽和高的,下面演示一下问题, 我用代码方式创建一个UIButton,并且设置了一些属性,下面看一下效果图 一切都是这么的美好,跟我们想要的一样啊,btn也跟着文字内容进行自身宽高的更改了啊!那我再设置多一点文字 怀着满怀激动的心情,再看一下效果图 哇哦,怎么变成这个样子了.文字内容都超出btn控件了,跟我们想象的不一样啊.这个问题该如何解决呢? 既然Xcode自带的UIButton类满足不了我们的需求.那么我们就自定义一个UIB

PHP-根据字符串和所用字体计算字符串所占宽高

今天由于用GD画图, 需要把一段文字在一个框内居中, 但是文字的宽度如果用strlen($str) * $font_size来计算的话, 由于文字不是等宽高的, 所以会导致偏离, 最后选用的GD库的imagettfbbox()函数, 其原型如下 array ImageTTFBBox(int size, int angle, string fontfile, string text); 其中返回一个数组, 有八个元素, 描述了四个角的坐标 0     左下角 X 位置 1     左下角 Y 位置

计算字符串绘制所需宽高

[str boundingRectWithSize: options: attributes: context:]; 可以用该方法在绘制之前计算需要多大空间. 参数 size 宽高限制,用于计算文本绘制时占据的矩形块. options 文本绘制时的附加选项. context context上下文.包括一些信息,例如如何调整字间距以及缩放.最终,该对象包含的信息将用于文本绘制.该参数可为 nil . 返回值 一个矩形,大小等于文本绘制完将占据的宽和高. size 参数是一个constraint ,

谈谈jQuery和js里有关位置和宽高的方法

总结一下jQuery.原生js设置和获取位置.宽高的方法. 一.jQuery关于元素位置的方法 position() 方法:只能获取,不能设置. 可获取元素相对于其第一个position值不为static的祖先元素的偏移量,如果没有,则是相对于文档的偏移量:返回一个对象,包括两个属性:left,top; 属性值无单位,number类型.具体用法: $(element).position().left; //获取元素相对于其第一个position值不为static的祖先元素的偏移量 offset(

获取屏幕宽高和系统色系

ios7下获取的屏幕高度    [UIScreen mainScreen].bounds.size.height=1024    ios8下获取的屏幕高度    [UIScreen mainScreen].bounds.size.height=768 if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) {        height =[UIScreen mainScreen].bounds.size.height;

iOS xib View宽高不能改变

IOS - xib(Interface Builder,view) - can't change view size(view不能改变大小问题) 今天在试着swift语言写个demo,,当中遇到了这个问题,分享一下 当我们自己定义tableview.collectionview的cell,也有时候我们要自己定义窗体xib,但创建xib后,其height.width不可改动. 这时问题就来了.怎么才干使我们的自己定义xib宽高可改动: 项目中创建xib,单独的view时, 方法: 默认Simula

javascript DOM元素宽高

获取元素位置 offsetLeft 元素相对于父元素的左边距离 offsetHeight 元素相对于父元素上部的距离 offsetLeft和style.left的区别 offsetLeft是只读的:style.left是可读写的,要改变元素的位置,只能使用style.left offset返回的是一个Number:style.left返回的是字符串,如“30px” style.left需要在HTML中直接定义.在CSS样式表中定义,是无法获取这个属性的 这里引出一点: 如果要获取元素属性的话,这

各种情况上JS获取元素宽高

各种情况下JS获取元素宽高 为了叙述简单,这里仅拿width示例. 情景一,元素style属性设置了width/height <div style="width:996px">test<div><script> var div = document.getElementsByTagName('div')[0]; alert(div.style.width);</script>默认分类 如上,使用el.style.width即可. 如果没有

007. 自定义ListBox的item的宽高, 字体居中

/// <summary> /// 自定义ListBox的item的宽高, 字体居中 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void lisB_DrawItem(object sender, DrawItemEventArgs e) { if (e.Index =