iOS各种显示模式使用及总结(contentMode,textAligment,contentVerticalAlignment,contentHorizontalAlignment)

初学者经常纠结于各种控件的各种显示模式,居中还是居上靠左还是靠右?

在此彻底总结一下:

  • textAligment:文字显示模式

NSTextAlignmentLeft      = 0,    // 左对齐
NSTextAlignmentCenter    = 1, // 居中对齐
NSTextAlignmentRight    = 2,   // 右对齐
NSTextAlignmentJustified = 3, // 充满view来显示

这四个显示模式在storeboard里面是这几个设置:


iOS各种显示模式使用及总结(contentMode,textAligment,contentVerticalAlignment,contentHorizontalAlignment)_第1张图片
storeboard设置

左对齐,右对齐,居中对齐就不多说了
重点说说一下NSTextAlignmentJustified,他是storeboard中的第四个按钮
把它和左对齐的效果图作比较
就能很明显的看出它的作用:


iOS各种显示模式使用及总结(contentMode,textAligment,contentVerticalAlignment,contentHorizontalAlignment)_第2张图片
左对齐
iOS各种显示模式使用及总结(contentMode,textAligment,contentVerticalAlignment,contentHorizontalAlignment)_第3张图片
充满view

拥有textAligment属性的控件(能够显示文字的一般都有):

UITextField
UILabel
UITextView

  • contentHorizontalAlignment\contentVerticalAlignment:内容的水平垂直显示模式

使用较为常见的就是Button的内容显示模式
Button里面有ImageView和Label两个子控件需要显示
我们可以分别设置常用的ImageView的contentMode(下面介绍这个属性),Label的textAligment
但是要将他们作为一个整体来控制,就需要Button的属性
contentHorizontalAlignment\contentVerticalAlignment

typedef NS_ENUM(NSInteger, UIControlContentVerticalAlignment) {//垂直方向
    UIControlContentVerticalAlignmentCenter  = 0,
    UIControlContentVerticalAlignmentTop     = 1,
    UIControlContentVerticalAlignmentBottom  = 2,
    UIControlContentVerticalAlignmentFill    = 3,
};
typedef NS_ENUM(NSInteger, UIControlContentHorizontalAlignment) {//水平方向
    UIControlContentHorizontalAlignmentCenter = 0,
    UIControlContentHorizontalAlignmentLeft   = 1,
    UIControlContentHorizontalAlignmentRight  = 2,
    UIControlContentHorizontalAlignmentFill   = 3,
};

在storeboard里面是这几个设置:


iOS各种显示模式使用及总结(contentMode,textAligment,contentVerticalAlignment,contentHorizontalAlignment)_第4张图片
storeboard中设置

测试例子:代码中分别设置了水平靠右,垂直靠上的话,imgeView和Label会一起向左上角靠近(实际运用中一般只单独设置水平方向或者垂直方向)

    button.contentHorizontalAlignment= UIControlContentHorizontalAlignmentLeft;
    button.contentVerticalAlignment = UIControlContentVerticalAlignmentTop;
按照左上角模式显示(黑色部分是图片 - -)

拥有contentHorizontalAlignment\contentVerticalAlignment属性的控件(继承自UIControl的控件或者UIControl本身):
UIControl
UIButton
UITextField

  • contentMode : 内容模式(控制内容的对齐方式), 一般对UIImageView很有用

typedef NS_ENUM(NSInteger, UIViewContentMode) {
UIViewContentModeRedraw,              
//带有Scale:可能会被拉伸或者压缩   
     //带有Scale - 不带Aspect:拉伸或者压缩的时候 不会按照比例             
     UIViewContentModeScaleToFill,    
     //带有Scale - 带Aspect:拉伸或者压缩的时候 会按照比例
     UIViewContentModeScaleAspectFit,  //图片会适应整个ImageView的大小(按照比例缩小扩大),全部显示出来    
     UIViewContentModeScaleAspectFill, //宽高比例不变(原大小显示) 显示的时候多余的裁掉   
//不带Scale:图片不会被拉伸或者压缩        
    UIViewContentModeCenter,        
    UIViewContentModeTop,        
    UIViewContentModeBottom,        
    UIViewContentModeLeft,        
    UIViewContentModeRight,        
    UIViewContentModeTopLeft,        
    UIViewContentModeTopRight,        
    UIViewContentModeBottomLeft,
    UIViewContentModeBottomRight,
}
注释:
以下演示图片中 : 红色是背景,黄色是ImageView背景色,白色妹子是图片

所有显示模式中
不带Scale的是较为简单一些
按照这些显示模式来显示,图片会按照原大小来显示,不会被拉伸也不会被压缩,
常用的是UIViewContentModeCenter
让图片按照原大小居中显示:


iOS各种显示模式使用及总结(contentMode,textAligment,contentVerticalAlignment,contentHorizontalAlignment)_第5张图片
UIViewContentModeCenter

如果图片超出控件大小,则图片就会超出控件显示,如下图


iOS各种显示模式使用及总结(contentMode,textAligment,contentVerticalAlignment,contentHorizontalAlignment)_第6张图片
UIViewContentModeCenter
下面用力(着重)介绍带有Scale字眼的模式(图片会被拉伸或者压缩)

带有Scale的三个模式中
有一个是不带有Aspect字眼的UIViewContentModeScaleToFill
它在拉伸的时候不会按照比例(图片会变形)
然后非常单纯的把整个ImageView填满:


iOS各种显示模式使用及总结(contentMode,textAligment,contentVerticalAlignment,contentHorizontalAlignment)_第7张图片
UIViewContentModeScaleToFill

另外两个带有Aspect字眼
他们被拉伸的时候图片的比例不会改变(图片不变形)
UIViewContentModeScaleAspectFit:
图片会完全显示
图片等比例缩小至宽等于ImageView的宽
或者高等于ImageView的高为止


iOS各种显示模式使用及总结(contentMode,textAligment,contentVerticalAlignment,contentHorizontalAlignment)_第8张图片
UIViewContentModeScaleAspectFit

UIViewContentModeScaleAspectFill:
图片也会完全显示(超出控件部分也会显示)
图片等比例拉伸至宽等于ImageView的宽
或者高等于ImageView的高为止
iOS各种显示模式使用及总结(contentMode,textAligment,contentVerticalAlignment,contentHorizontalAlignment)_第9张图片
UIViewContentModeScaleAspectFill

感谢阅读
你的支持是我写作的唯一动力

关注我的文章微信公众号, 随时与你分享我的文章

iOS各种显示模式使用及总结(contentMode,textAligment,contentVerticalAlignment,contentHorizontalAlignment)_第10张图片
扫码关注我.jpg

你可能感兴趣的:(iOS各种显示模式使用及总结(contentMode,textAligment,contentVerticalAlignment,contentHorizontalAlignment))