如何用行间距怎么设置计算灌溉材料

访问本页面,您的浏览器需要支持JavaScript小管出流灌溉工程设计_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
小管出流灌溉工程设计
阅读已结束,如果下载本文需要使用
想免费下载本文?
你可能喜欢CoreText&轻松设置字体大小,间距,行间距,段间距,算高度
下面主要讲,如何设置字体,间距,并计算(带特定段间距,行间距,字间距,字大小)文字的高度。
1.首先当然是导入CoreText.framework,如果这个不会,下面的你就别看了!
2 自己写一个继承UIView的类,我写的叫 MyView&
& &.h代码如下:
@interface Myview :
@property(nonatomic,retain)NSString * //要画的文字
@property(nonatomic,assign)CGFloat
//字体大小
@property(nonatomic,assign)CGFloat
@property(nonatomic,assign)CGFloat
@property(nonatomic,assign)CGFloat //段落间距
看到上面的5个属性,就是我们自己,可以随意设置的。
.m部分的全部代码如下,看不懂没关系,会用就行(东西都是,先了解,会用,然后理解)
#import "Myview.h"
@implementation Myview
-(void)dealloc
& & [_text release];
& & [super dealloc];
- (id)initWithFrame:(CGRect)frame
& & self = [super initWithFrame:frame];
& & if (self) {
& self.font = 15;
&&self.text
= @"请给myview.text赋值";&
& self.line = 10;
& self.paragraph = 20;
& self.character = 4;
& return self;
-(void)drawRect:(CGRect)rect
& & [super drawRect:rect];
& //创建AttributeStringfdsa
& NSMutableAttributedString *string = [[NSMutableAttributedString
initWithString:self.text];
& //创建字体以及字体大小
& & CTFontRef helvetica = CTFontCreateWithName(CFSTR("Helvetica"), self.font, NULL);
& & CTFontRef helveticaBold = CTFontCreateWithName(CFSTR("Helvetica"), self.font, NULL);
& & //字体,把helvetica
样式加到整个,string上
[string addAttribute:(id)kCTFontAttributeName
& value:(id)helvetica
& range:NSMakeRange(0, [string length])];
& //字体样式
,把helveticaBold
样式加到整个,string上
[string addAttribute:(id)kCTFontAttributeName
& value:(id)helveticaBold
& range:NSMakeRange(0, [string length])];
& & //颜色,此处为黑色,你可以自己改颜色,[UIColor
[string addAttribute:(id)kCTForegroundColorAttributeName
& value:(id)[UIColor blackColor].CGColor
& range:NSMakeRange(0, [string length])];
& //创建文本对齐方式
& CTTextAlignment alignment =
kCTJustifiedTextAlignment;//对齐方
& CTParagraphStyleSetting alignmentS
alignmentStyle.spec=kCTParagraphStyleSpecifierAlignment;
& &alignmentStyle.valueSize=sizeof(alignment);
& &alignmentStyle.value=&
& //设置字体间距
& long number
= self.character;
& & CFNumberRef num = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt8Type, &number);
& [string addAttribute:(id)kCTKernAttributeName value:(id)num range:NSMakeRange(0, [string length])];
& CFRelease(num);
& //创建文本,
& & CGFloat lineSpace=self.line;//间距数据
& CTParagraphStyleSetting lineSpaceS
lineSpaceStyle.spec=kCTParagraphStyleSpecifierLineSpacing;
& & lineSpaceStyle.valueSize=sizeof(lineSpace);
& & lineSpaceStyle.value=&lineS
& & CGFloat paragraph = self.paragraph;
& CTParagraphStyleSetting paragraphS
paragraphStyle.spec
kCTParagraphStyleSpecifierParagraphSpacing;
& & paragraphStyle.valueSize = sizeof(CGFloat);
& & paragraphStyle.value = &
& //创建样式数组
& CTParagraphStyleSetting settings[]={
& alignmentStyle,lineSpaceStyle,paragraphStyle
& //设置样式
& & CTParagraphStyleRef paragraphStyle1 =
CTParagraphStyleCreate(settings,
sizeof(settings));
& //给字符串添加样式attribute
[string addAttribute:(id)kCTParagraphStyleAttributeName
& value:(id)paragraphStyle1
& range:NSMakeRange(0, [string length])];
& // layout master
& CTFramesetterRef& framesetter =
CTFramesetterCreateWithAttributedString((CFAttributedStringRef)string);
& //计算文本绘制size
,这里300是文字宽度,你可以自己更改为247,但是要记得,在height 方法里的这个位置,也改为247
& CGSize tmpSize
= CTFramesetterSuggestFrameSizeWithConstraints(framesetter, CFRangeMake(0,0),
NULL, CGSizeMake(300,
MAXFLOAT), NULL);
& //创建textBoxSize以设置view的frame
& & CGSize textBoxSize = CGSizeMake((int)tmpSize.width + 1, (int)tmpSize.height + 1);
NSLog(@"textBoxSize0& ==
%f,%f,%f",textBoxSize.width,textBoxSize.height,textBoxSize.width /
textBoxSize.height);
& & self.frame = CGRectMake(0, 0,
textBoxSize.width ,
textBoxSize.height);
& & [string release];
(void)drawRect:(CGRect)代码
& & CGMutablePathRef leftColumnPath =
CGPathCreateMutable();
& & CGPathAddRect(leftColumnPath, NULL,
CGRectMake(0, 0,
self.bounds.size.width,
self.bounds.size.height));
& & CTFrameRef leftFrame = CTFramesetterCreateFrame(framesetter,
& & CFRangeMake(0, 0),
& & leftColumnPath, NULL);
NSLog(@"textBoxSize1& ==
%f,%f",self.frame.size.width,self.frame.size.height);
& // flip the coordinate system
& CGContextRef context =
UIGraphicsGetCurrentContext();
& CGContextClearRect(context, self.frame);
CGContextSetFillColorWithColor(context,
whiteColor]CGColor]);
& & CGContextFillRect(context, CGRectMake(0, 0,
320, self.frame.size.height));
& CGContextSetTextMatrix(context,
CGAffineTransformIdentity);
& & CGContextTranslateCTM(context, 0, self.bounds.size.height);
& & CGContextScaleCTM(context, 1.0, -1.0);
& & CTFrameDraw(leftFrame, context);
& // cleanup
& & CGPathRelease(leftColumnPath);
& & CFRelease(framesetter);
& //CFRelease(helvetica);
& // CFRelease(helveticaBold);
& UIGraphicsPushContext(context);
#pragma mark& - 计算高度的方法
//这个方法,剪切到你要用的那个类里面,就ok了
// 或者,就放这里,但改成实例方法,+(CGSize)height:^^^^^^^^^
-(CGSize)height:(NSString *)text Font:(CGFloat)font Character:(CGFloat)character Line:(CGFloat)line Pragraph:(CGFloat)pragraph
& //创建AttributeStringfdsa
& NSMutableAttributedString *string = [[NSMutableAttributedString
initWithString:text];
& //创建字体以及字体大小
& & CTFontRef helvetica = CTFontCreateWithName(CFSTR("Helvetica"), font, NULL);
& & CTFontRef helveticaBold = CTFontCreateWithName(CFSTR("Helvetica"), font, NULL);
& //添加字体目标字符串从下标0开始到字符串结尾
[string addAttribute:(id)kCTFontAttributeName
& value:(id)helvetica
& range:NSMakeRange(0, [string length])];
& //添加字体目标字符串从下标0开始,截止到4个单位的长度
[string addAttribute:(id)kCTFontAttributeName
& value:(id)helveticaBold
& range:NSMakeRange(0, [string length])];
[string addAttribute:(id)kCTForegroundColorAttributeName
& value:(id)[UIColor whiteColor].CGColor
& range:NSMakeRange(0, [string length])];
& CTTextAlignment alignment =
kCTJustifiedTextAlignment;//这种对齐方式会自动调整,使左右始终对齐
& CTParagraphStyleSetting alignmentS
alignmentStyle.spec=kCTParagraphStyleSpecifierAlignment;//指定为对齐属性
& & alignmentStyle.valueSize=sizeof(alignment);
& & alignmentStyle.value=&
& //设置字体间距
& & long number =
& CFNumberRef num = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt8Type, &number);
& & [string addAttribute:(id)kCTKernAttributeName value:(id)num range:NSMakeRange(0, [string length])];
& & CFRelease(num);
& //创建文本行间距
& & CGFloat lineSpace=//间距数据
& CTParagraphStyleSetting lineSpaceS
lineSpaceStyle.spec=kCTParagraphStyleSpecifierLineSpacing;//指定为行间距属性
& & lineSpaceStyle.valueSize=sizeof(lineSpace);
& & lineSpaceStyle.value=&lineS
& //设置段落间距
& & CGFloat paragraph =
& CTParagraphStyleSetting paragraphS
paragraphStyle.spec
kCTParagraphStyleSpecifierParagraphSpacing;
& & paragraphStyle.valueSize = sizeof(CGFloat);
& & paragraphStyle.value = &
& //创建样式数组
& CTParagraphStyleSetting settings[]={
& alignmentStyle,lineSpaceStyle,paragraphStyle
& //设置样式
& & CTParagraphStyleRef paragraphStyle1 =
CTParagraphStyleCreate(settings,
sizeof(settings));
& //给字符串添加样式attribute
[string addAttribute:(id)kCTParagraphStyleAttributeName
& value:(id)paragraphStyle1
& range:NSMakeRange(0, [string length])];
& // layout master
& CTFramesetterRef& framesetter =
CTFramesetterCreateWithAttributedString((CFAttributedStringRef)string);
& //计算文本绘制size
& CGSize tmpSize
= CTFramesetterSuggestFrameSizeWithConstraints(framesetter, CFRangeMake(0,0),
NULL, CGSizeMake(300,
MAXFLOAT), NULL);
& //创建textBoxSize以设置view的frame
& & CGSize textBoxSize = CGSizeMake((int)tmpSize.width + 1, (int)tmpSize.height + 1);
& & [string release];
& & return textBoxS
注意上面的Myview 默认要绘制的文字宽度是 300,如果你想要的文字宽度是 200,请你去改代码,
//计算文本绘制size
,这里300是文字宽度,你可以自己更改为200,但是要记得,在height 方法里的这个位置,也改为200,这个很重要
&&CGSize&tmpSize
=CTFramesetterSuggestFrameSizeWithConstraints(framesetter,CFRangeMake(0,0),&NULL,&CGSizeMake(300,&MAXFLOAT),&NULL);
&把这个MyView
加入到你的工程里面,就完成了工作的80%了,接下来,更简单,
4 &看完下面的,你就会了
我们知道,不同文字他的高度,是不确定的,如果超过 height 460,548,那么你一个屏幕是显示不下的
这时候,我们怎么用这个Myview呢
&请看下面的具体用法,
@property(nonatomic,assign)CGSize
@property(nonatomic,retain)NSString *
(void)viewDidLoad
viewDidLoad];
& &self.text =
@"";你自己赋值,&
& self.size
= [self height:self.text
Font:15 Character:4
Line:10 Pragraph:20];
//必须先计算高度
& NSLog(@"width:%f, height:%f",self.size.width,self.size.height);&
//在下面这个方法中的用法,
-(UITableViewCell*)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
alloc]initWithFrame:CGRectMake(0, 0, self.size.width, self.size.height)];//知道为什么,先算高度了吧
& & myview.text = self.text;
& & myview.font = 15;
& & myview.line = 10;
& & myview.paragraph = 20;
& myview.character = 4; //这些值比须和,height方法里传的5个参数一一对 & &
&//应相等。
& & UIView *v1 = [[UIView alloc]initWithFrame:CGRectMake(8, 10,
304, self.size.height)]; //这里并不是多此一举,不信你自己去掉试试,你会发
&//现,你画的文字,是从(0,y,width,height)这里开始画的,和里myview的
//CGRectMake(x,y,300,height)x,y无关。
& & [v1 addSubview:myview];
& & [cell addSubview:v1];
当然cell的高度,也是我们算好了的
-(CGFloat)tableView:(UITableView *)tableView
heightForRowAtIndexPath:(NSIndexPath *)indexPath
return self.size.height+20;
到此,你应该已经会了,如果关键的第4步,你没看懂,那么请看下篇,我贴出了,使用Myview的详细全部代码,你直接使用之后就明白了。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
浅谈节水灌溉滴灌系统设计及施工技术
下载积分:5000
内容提示:浅谈节水灌溉滴灌系统设计及施工技术
文档格式:PDF|
浏览次数:1|
上传日期: 01:47:20|
文档星级:
该用户还上传了这些文档
浅谈节水灌溉滴灌系统设计及施工技术
官方公共微信}

我要回帖

更多关于 uilabel 行间距 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信