code中默认的UILabel是垂直居中对齐的,如果你的UILabel高度有多行,当内容少的时候,会自动垂直居中。
比较郁闷的是,UILabel并不提供设置其垂直对齐方式的选项。所以如果你想让你的文字顶部对齐,那么就需要自己想办法了。
CGSize maximumSize =CGSizeMake(300,9999);
NSString*dateString =@"The date today is January 1st, 1999";
UIFont*dateFont =[UIFont fontWithName:@"Helvetica" size:14];
CGSize dateStringSize =[dateString sizeWithFont:dateFont
constrainedToSize:maximumSize
lineBreakMode:self.dateLabel.lineBreakMode];
CGRect dateFrame =CGRectMake(10,10,300, dateStringSize.height);
self.dateLabel.frame = dateFrame;
方法二:
for(int i=0; i<newLinesToPad; i++)
self.text =[self.text stringByAppendingString:@"\n "];
方法三:
最正统的方法,利用objective-c的category特性,修改UILabel的绘制代码。示例代码如下:
// -- file: UILabel+VerticalAlign.h
#pragma mark VerticalAlign
@interfaceUILabel(VerticalAlign)
-(void)alignTop;
-(void)alignBottom;
@end
// -- file: UILabel+VerticalAlign.m
@implementationUILabel(VerticalAlign)
-(void)alignTop {
CGSize fontSize =[self.text sizeWithFont:self.font];
double finalHeight = fontSize.height *self.numberOfLines;
double finalWidth =self.frame.size.width;//expected width of label
CGSize theStringSize =[self.text sizeWithFont:self.font constrainedToSize:CGSizeMake(finalWidth, finalHeight) lineBreakMode:self.lineBreakMode];
int newLinesToPad =(finalHeight - theStringSize.height)/ fontSize.height;
for(int i=0; i<newLinesToPad; i++)
self.text =[self.text stringByAppendingString:@"\n "];
}
-(void)alignBottom {
CGSize fontSize =[self.text sizeWithFont:self.font];
double finalHeight = fontSize.height *self.numberOfLines;
double finalWidth =self.frame.size.width;//expected width of label
CGSize theStringSize =[self.text sizeWithFont:self.font constrainedToSize:CGSizeMake(finalWidth, finalHeight) lineBreakMode:self.lineBreakMode];
int newLinesToPad =(finalHeight - theStringSize.height)/ fontSize.height;
for(int i=0; i<newLinesToPad; i++)
self.text =[NSString stringWithFormat:@" \n%@",self.text];
}
@end
相关推荐
本文将深入探讨如何实现UILabel的文字对齐方式,包括上对齐、上居中对齐、上两端对齐以及中、下对齐方式。 首先,UILabel的标准对齐方式有三种:左对齐、居中对齐和右对齐,这可以通过设置`NSTextAlignment`枚举值...
标题已经写明,例子代码里有,用法可以customlabel.verticalAlignment=CustomLabel.VerticalAlignment.VerticalAlignmentBottom底部对齐
本知识点将深入探讨如何为`UILabel`添加动态高度调整和顶端对齐等拓展属性。 首先,让我们关注动态设置label高度这一特性。在某些场景下,如显示未知长度的文本或者实时更新的内容,我们需要`UILabel`能够根据内容...
- **描述**:`textAlignment`属性控制文本在`UILabel`中的对齐方式。默认为左对齐(`NSTextAlignmentLeft`),也可以设置为居中对齐(`NSTextAlignmentCenter`)或右对齐(`NSTextAlignmentRight`)。 - **示例...
在某些设计需求中,我们可能需要使`UILabel`的文字内容两端对齐,以获得更美观的布局效果。本文将详细讲解如何在iOS中实现`UILabel`的文本两端对齐,并提供具体的代码示例。 首先,为了实现`UILabel`的两端对齐,...
原生的label不好实现两端对齐,二期实现两端对齐也把每个字母分的很开,这个项目我把字母、数字、逗号等视为一个字,汉子为一个字,这样来去绘制两端对齐,你们也可以自己改动一下项目中的一个宏,来设置你们自己想...
7. alignment:设置文本对齐方式,如左对齐、居中、右对齐。 自定义UILabel通常涉及到以下方面: 1. **自定义文字样式**:可以通过修改font属性来改变字体大小和类型。同时,textColor可以调整文本颜色。为了实现...
4. **对齐方式**:`textAlignment`属性控制文本的水平对齐方式,如左对齐、居中或右对齐。 5. **多行显示**:`numberOfLines`属性可以设置为0,让`UILabel`自动换行显示多行文本。 6. **自动调整大小**:`...
在iOS开发中,`UILabel`是用于展示单行或多行文本的常见视图。它通常用于显示信息或者作为用户交互的一部分。然而,`UILabel`默认并不支持子字符串的局部点击事件,即用户不能通过点击文本中的某一部分来触发特定的...
在iOS开发中,我们经常需要在用户界面中与用户进行交互,UILabel作为显示文本的常用控件,有时需要实现更复杂的功能,比如让其中的某段文字具备点击事件。本篇将详细介绍如何通过扩展UILabel来实现这个功能,以及...
在某些场景下,我们可能还需要考虑文本的排版方式,比如是否允许截断(`lineBreakMode`)和对齐方式(`textAlignment`)。这些属性也可以影响`UILabel`的显示效果。例如,如果希望文本在宽度不足时自动换行,可以...
JTImageLabel, 在iOS上,JTImageLabel同时保留UILabel和 UIImageView JTImageLabel JTImageLabel是一个简单的视图,它包含一个 UILabel 和一个 UIImageView,即使你更改了 UILabel的对齐方式。安装使用 CocoaPods...
我们可以设置它的文本内容、字体、颜色、对齐方式等属性。默认情况下,`UILabel`并没有提供添加删除线的功能。因此,我们需要通过继承`UILabel`来自定义一个新的类来实现这个特性。 创建自定义`UILabel`子类的步骤...
在iOS开发中,`UILabel` 是一个非常常用的控件,用于显示单行或多行文本。在某些场景下,我们希望文本能根据其内容自动换行,以适应不同的屏幕尺寸和布局需求。`UILabel` 的自动换行功能正是解决这一问题的关键。本...
在iOS开发中,UILabel是用于显示单行或多行文本的常用控件,它简洁而功能强大。然而,有时候我们可能会遇到这样一个问题:UILabel在显示文本时出现闪烁的现象,这不仅影响用户体验,也可能对应用程序的整体质量产生...
这里我们创建了一个NSMutableAttributedString,设置了段落样式,包括对齐方式、换行模式等。然后,我们通过设置`textRotation`属性来实现旋转。最后,将处理过的attributedString赋值给UILabel的`attributedText`。...
在Swift开发中,文本输入和显示是用户界面(UI)设计的重要组成部分,UILabel是一个常用的类,用于展示单行或多行的静态文本。本教程将详细讲解如何根据文本内容和字体来计算UILabel的宽度,并实现其自适应宽高的...