美文网首页iOS程序员的业余沙龙
UILabel一行居中对齐与多行左对齐

UILabel一行居中对齐与多行左对齐

作者: 千若逸 | 来源:发表于2017-10-23 11:33 被阅读539次

想来用过UIAlertView的都知道其中的文字内容是居中对齐(水平方向)的,如果只有一行文字还好,多行文字时如果最后一行撑不满宽度,也会显示居中效果,整体看起来怪怪的。

这其实就是其中的label控件设置了水平居中(水平方向)的效果,它没法自动根据文字行数来自动调整对齐方式。

如果把label设置成文字内容左对齐,多行内容左对齐满足了,但是只有一行内容且很短时也居左对齐显得不太好。

所以问题就来了:怎么实现UILabel控件文字只有一行时居中对齐,有多行时左对齐。

常规办法无非是判断文字内容是否多行,涉及到宽度计算问题,想来就觉得麻烦,能不能让它自动计算呢?

不要让UILabel限制了思维,试问一个问题:如果一个label是左对齐,文字内容很短,不足以撑满屏幕宽度,怎么让它一个屏幕中显示的效果是水平居中呢?
我想答案应该是让label自适应文字内容宽度,设置label水平居中对齐于屏幕。
这个时候我想label无论设置什么水平方向对齐方式,都对上面的事实毫无影响。
既然多行需要居左对齐,那么就把label设置为左对齐,就好了。

所以为了解决上面的问题,需要借助一个containerView和AutoLayout。

这用到了UILabel的一个属性:intrinsicContentSize。有了这个属性,在AutoLayout中对UILabel控件进行布局时,可以不指定其宽高而让它根据文字内容进行自动适配宽高。

设置label和containerView的AutoLayout的方法应该是这样的:label相对于containerView水平方向、 垂直方向居中,不指定label宽度,label.left>=containerView.left,label.right<=containerView.right,label.top>=containerView.top,label.bottom<=containerView.top。

参考:

深入理解Auto Layout 第一弹 | 张不坏的博客

相关文章

  • 【转载】LaTeX 对齐方式

    一行对齐 \leftline{左对齐} \centerline{居中} \rightline{右对齐} 多行或者段...

  • UILabel一行居中对齐与多行左对齐

    想来用过UIAlertView的都知道其中的文字内容是居中对齐(水平方向)的,如果只有一行文字还好,多行文字时如果...

  • 10天特训营之彻底搞定对齐和分页

    段落对齐 左对齐 居中对齐 右对齐 两段对齐 分散对齐(最后一行自动调整成一行) 标尺 首行缩进 悬挂缩进 左缩进...

  • 10天特训营之彻底搞定对齐和分页

    段落对齐 左对齐 居中对齐 右对齐 两段对齐 分散对齐(最后一行不满一行自动调整成一行) 标尺 ①首行缩进 悬挂缩...

  • Markdown(四)-表格

    一、 极简方式 二、居中对齐 三、左右对齐 |表格分割线 默认左对齐:- 左对齐:-: 居中对齐-: 右...

  • 让UILabel的文字顶部对齐

    默认UILabel是垂直居中对齐的,如果你的UILabel高度有多行,当内容少的时候,会自动垂直居中。 如下图所示...

  • iOS的UILabel设置居上对齐,居中对齐,居下对齐

    前言: 正文:想实现UILabel居上对齐,居中对齐,居下对齐,如下效果: 在iOS中默认的UILabel中的文字...

  • CSS布局篇

    1.单行时居中,多行时左对齐 原理:父元素设置居中对齐,子元素设置为inline-block元素,当单行时,整个子...

  • Flex 布局介绍

    HTML 多个元素在一行 CSS 多个元素水平居中对齐 多个元素水平两端对齐 多行多个元素水平两端对齐 多个元素在...

  • Excel怎么使用?-对齐方式

    Excel字体的对齐方式有顶端对齐,垂直居中,底端对齐;左对齐,居中,右对齐;方向,减少缩进量,增加缩进量;自动换...

网友评论

    本文标题:UILabel一行居中对齐与多行左对齐

    本文链接:https://www.haomeiwen.com/subject/lfiouxtx.html