iOS - UILabel中的文字置顶或置底

通过一个类别,轻松实现。代码如下:

.h

#import <UIKit/UIKit.h>

@interface UILabel (Vertical)

- (void)alignTop;

- (void)alignBottom;

@end

.m

#import "UILabel+Vertical.h"

@implementation UILabel (Vertical)

-(void)alignTop
{
    // 对应字号的字体一行显示所占宽高
    CGSize fontSize = [self.text sizeWithAttributes:@{NSFontAttributeName:self.font}];
    // 多行所占 height*line
    double height = self.frame.size.height;
    // 显示范围实际宽度
    double width = self.frame.size.width;
    // 对应字号的内容实际所占范围
    CGSize stringSize = [self.text boundingRectWithSize:CGSizeMake(width, height) options:(NSStringDrawingUsesLineFragmentOrigin) attributes:@{NSFontAttributeName:self.font} context:nil].size;
    // 剩余空行
    NSInteger line = (height - stringSize.height) / fontSize.height;
    // 用回车补齐
    for (int i = 0; i < line; i++) {
        
        self.text = [self.text stringByAppendingString:@"\n "];
    }
}
-(void)alignBottom
{
    CGSize fontSize = [self.text sizeWithAttributes:@{NSFontAttributeName:self.font}];
    double height = fontSize.height*self.numberOfLines;
    double width = self.frame.size.width;
    CGSize stringSize = [self.text boundingRectWithSize:CGSizeMake(width, height) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:self.font} context:nil].size;
    
    NSInteger line = (height - stringSize.height) / fontSize.height;
    // 前面补齐换行符
    for (int i = 0; i < line; i++) {
        self.text = [NSString stringWithFormat:@" \n%@", self.text];
    }
}

@end
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,978评论 25 709
  • 引子 早晨我去上学时候,学校操场围了一大群同学和老师,我扒开人群挤到前面,看到鼠倒在地上,旁边的水泥地被干透了的鲜...
    城外42阅读 4,019评论 2 3
  • 前几天,一位朋友跟我聊起小时候看的动画片,我才突然意识到自己对于童年记忆的稀薄。很多零散的场景、画面、事件虽历历在...
    MoFarah阅读 3,237评论 0 2
  • 健康不是一个人的,它是爱人、父母、子女、兄弟姐妹这个大家庭的。健康是一种责任,却很少有人能明白这一点。 小时候单纯...
    互帮互助阅读 2,972评论 0 0
  • 噢耶,终于培训结束,满满干货。 今日也总算是回家吃了晚饭,感天动地的。 写完培训心得,又是新的一日了,快快洗漱,还...
    嘟嘟侃侃阅读 1,274评论 0 0

友情链接更多精彩内容