控制UIlabel 垂直方向对齐方式的 方法

最正统的方法,利用objective-c的category特性,修改UILabel的绘制代码。示例代码如下:






1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
// -- file: UILabel+VerticalAlign.h
#pragma mark VerticalAlign
@interface UILabel (VerticalAlign)
- (void)alignTop;
- (void)alignBottom;
@end
// -- file: UILabel+VerticalAlign.m
@implementation UILabel (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

时间: 2024-10-20 13:26:41

控制UIlabel 垂直方向对齐方式的 方法的相关文章

敲敲黑板 | 文字垂直方向对齐这样设置!

大家好! 关于文本段落的对齐方式,Word共提供了五种:左对齐.居中对齐.右对齐.两端对齐和分散对齐,平时常用的文本段落对齐方式是两端对齐.原因嘛,大家可以去这篇推送中第1部分中去看. 这里有朋友提问了,达人君,你老是抓住水平这个方向不放,说起来没完了啊?那文本在垂直(上下)方向上可以调整吗? 其实嘛,关于段落的对齐,个人感觉可以大体上从这几个角度去理解: 1.段落整体在水平方向上的对齐,也就是上面所提到的五种对齐方式,这种五种对齐方式其实是相对于左右页边距来说的: 2.段落整体在垂直方向上的对

UILabel垂直方向显示(上下的顺序显示)。

NSString* text = @"一"; NSDictionary *attribute = @{NSFontAttributeName: [UIFont systemFontOfSize:16]}; CGSize size = [text boundingRectWithSize:CGSizeMake(1000, 90) options: NSStringDrawingTruncatesLastVisibleLine | NSStringDrawingUsesLineFragme

UILabel文本垂直顶部对齐的方法

也不知道为什么UILabel本身没有提供文本垂直顶部对齐的方法,真的有点晕.我们创建一个简单的UILabel来看看: [box type="info"] UILabel *myLabel = [[UILabel alloc]initWithFrame:CGRectMake(10, 10, 300, 100)]; [myLabel setText:@"苹果iOS(iphone Operation System)是由苹果公司开发的手持设备操作系统.苹果公司最早于2007年1月9日

UIlabel居上对齐遇到的问题和解决方法以及其他相关资料

UILabel的text的对其方式有四种类型 NSTextAlignmentLeft; NSTextAlignmentCenter; NSTextAlignmentRight; 基本够用 但是今天遇到个问题 就是当我label很高字体很小的时候 默认的label文字永远是默认在中间  上图 [myLabel sizeToFit];首先试了这个方法 但是发现改变大小适应这个属性 会让文字在左上角并且label的height也随之缩小 添加numberToLine=0可以在换行的时候改变高度 其实这

Raphael的text及对齐方式

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + &q

自定义UILabel设置垂直方向的居上,居中,居下

IOS系统框架中UILabel的属性textAlignment只调整水平方向的居中,居左,居右,而没有垂直方向的调整.所以要自定义一个继承自UILabel的类,在类的实现文件中进行文字的重绘,达到垂直方向的位置调整. 新建一个类文件,继承自UILabel,头文件如下: #import <UIKit/UIKit.h> typedef NS_ENUM(NSInteger,VerticalAlignment){ VerticalAlignmentTop, VerticalAlignmentMiddl

CSS3----vertical-align(文本垂直对齐方式)

一.代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>文本垂直对齐方式vertical-align</title> <style type="text/css"> .head{ margin: 0 0 0 100px; } .container{ margin: 0 0 0 100px; } .contai

css属性设置元素的垂直对齐方式

vertical-align 属性设置元素的垂直对齐方式. 可能的值 值 描述 baseline 默认.元素放置在父元素的基线上. sub 垂直对齐文本的下标. super 垂直对齐文本的上标 top 把元素的顶端与行中最高元素的顶端对齐 text-top 把元素的顶端与父元素字体的顶端对齐 middle 把此元素放置在父元素的中部. bottom 把元素的顶端与行中最低的元素的顶端对齐. text-bottom 把元素的底端与父元素字体的底端对齐. length   % 使用 "line-he

par函数的adj 参数- 控制文字的对齐方式

adj 用来控制文字的对齐方式,取值范围为0到1,控制图片中x轴和y轴标签,标题,以及通过text 添加的文字的对齐方式 0表示左对齐,代码示例: par(adj = 0)plot(1:5, 1:5, type = "n", main = "title", xlab = "x", ylab = "y")abline(h = 3, lty = 2)abline(v = 3, lty = 2)text(x = 3, y= 3, l