美文网首页
左右文本,右侧可动态

左右文本,右侧可动态

作者: 雪_晟 | 来源:发表于2019-02-14 17:10 被阅读17次

前言

WX20190214-164756@2x.png

如上图,经常会有各种需求,比如右侧文本对齐方式(左右对齐),右侧文本的行数限定(可以限制无限行,也可以限制行数),整体的高度根据左右文本来确定,左侧文本限定一个宽度,等等。开工前,为了防止UI的操蛋布局不统一,还是写一个通用的类。

lineView

.h

/**
 * 左侧间距 leftSpace
 * 左右文本间距 centerSpace
 * 右侧间距 rightSpace
 * 右侧文本 NumberOfLines
 * 右侧文本对齐方式 rightLabelTextAlignment
 * 右侧文本对齐方式 rightLabelTextAlignment
 * 是否限制高度 limitHeight 0,不限制 ,如果限制高度,那么居中对齐。
 * 左侧文本限制是否限制宽度
 */
@interface LXBaseLineView : UIView
-(instancetype)initWithLeftSpace:(CGFloat)leftSpace centerSpace:(CGFloat)centerSpace rightSpace:(CGFloat)rightSpace rightLabelLines:(NSInteger)rightNumberOfLines rightLabelTextAlignment:(NSTextAlignment)rightLabelTextAlignment limitLeftWidth:(CGFloat)limitLeftWidth limitHeight:(CGFloat)limitHeight;

@property (nonatomic ,strong)UILabel *leftLabel;
@property (nonatomic ,strong)UILabel *rightLabel;

.m

#import "LXBaseLineView.h"
@interface LXBaseLineView()
@property (nonatomic ,assign)CGFloat leftSpace;
@property (nonatomic ,assign)CGFloat centerSpace;
@property (nonatomic ,assign)CGFloat rightSpace;
@property (nonatomic ,assign)CGFloat limitHeight;
@property (nonatomic ,assign)CGFloat limitLeftWidth;

@end
@implementation LXBaseLineView
//-(void)dealloc{
//    NSLog(@"%@",self.class);
//}
-(instancetype)initWithLeftSpace:(CGFloat)leftSpace centerSpace:(CGFloat)centerSpace rightSpace:(CGFloat)rightSpace rightLabelLines:(NSInteger)rightNumberOfLines rightLabelTextAlignment:(NSTextAlignment)rightLabelTextAlignment limitLeftWidth:(CGFloat)limitLeftWidth limitHeight:(CGFloat)limitHeight{
    self = [super init];
    if (self) {
        
        self.leftSpace = leftSpace;
        self.centerSpace = centerSpace;
        self.rightSpace = rightSpace;
        self.rightLabel.numberOfLines = rightNumberOfLines;
        self.rightLabel.textAlignment  = rightLabelTextAlignment;
        self.limitLeftWidth = limitLeftWidth;
        self.limitHeight = limitHeight;
        [self initilize];
    }
    return self;


}
-(instancetype)init{
    self = [super init];
    if (self) {
        
        self.leftSpace = 15;
        self.centerSpace = 15;
        self.rightSpace = 15;
        self.limitHeight = 0;
        self.limitLeftWidth = 0;
        [self initilize];
        

    }
    return self;
}
-(void)initilize{
    
    
    [self addSubview:self.leftLabel];
    [self addSubview:self.rightLabel];
    
    [self.leftLabel mas_makeConstraints:^(MASConstraintMaker *make) {
        
        make.left.mas_equalTo(self.leftSpace);
        //如果有限制高度 那么居中对齐
        if (self.limitHeight) {
        
            make.centerY.mas_equalTo(0);
        }else{
            
            make.top.mas_equalTo(0);
        }
        
        //如果限制了左侧宽度
        if (self.limitLeftWidth) {
            make.width.mas_equalTo(@(self.limitLeftWidth));
        }
        
    }];
    
   
    
    
    [self.rightLabel mas_makeConstraints:^(MASConstraintMaker *make) {
        
        make.right.mas_equalTo(-self.rightSpace);
       
        make.left.mas_equalTo(self.leftLabel.mas_right).offset(self.centerSpace);
        
        
        //如果有限制高度 那么居中对齐
        if (self.limitHeight) {
            
            make.centerY.mas_equalTo(0);
            make.height.lessThanOrEqualTo(@(self.limitHeight));
        }else{
            
            make.top.mas_equalTo(0);
        }

    }];
    
    //当没有设置左文本最大宽度的时候左侧文本设置抗拉伸
    if (!self.limitLeftWidth) {
        [self.leftLabel setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal];
        [self.rightLabel setContentCompressionResistancePriority:UILayoutPriorityDefaultLow forAxis:UILayoutConstraintAxisHorizontal];
    }
    
    [self.leftLabel setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal];
    [self.rightLabel setContentHuggingPriority:UILayoutPriorityDefaultLow forAxis:UILayoutConstraintAxisHorizontal];
    
    [self mas_makeConstraints:^(MASConstraintMaker *make) {
        
        //如果有限制高度
        if (self.limitHeight) {
            make.height.mas_equalTo(self.limitHeight);
        }else{
            make.bottom.mas_equalTo(self.rightLabel.mas_bottom);
            make.height.mas_greaterThanOrEqualTo(self.leftLabel.mas_height);
        }
       
    }];
    
}
//明细名称
-(UILabel *)leftLabel{
    if (!_leftLabel) {
        _leftLabel = [[UILabel alloc]init];
        _leftLabel.textColor  = [UIColor blackColor];
        _leftLabel.textAlignment = NSTextAlignmentLeft;
        _leftLabel.numberOfLines = 1;
        _leftLabel.text  = @"商品总价";
        
    }
    return _leftLabel;
}
//明细名称
-(UILabel *)rightLabel{
    if (!_rightLabel) {
        _rightLabel = [[UILabel alloc]init];
        _rightLabel.textColor  = UIColorHexFromRGB(0x666666);
        _rightLabel.textAlignment = NSTextAlignmentLeft;
        _rightLabel.numberOfLines = 0;
        _rightLabel.text  = @"¥ 60.00";

    }
    return _rightLabel;
}

使用

模拟一个json。


lineView.gif
 self.lineView = [[LXBaseLineView alloc]initWithLeftSpace:15 centerSpace:15 rightSpace:15 rightLabelLines:0 rightLabelTextAlignment:NSTextAlignmentRight limitLeftWidth:0 limitHeight:60];
    [self.view addSubview:self.lineView];
    [self.lineView mas_makeConstraints:^(MASConstraintMaker *make) {
        make.left.right.mas_equalTo(0);
        make.top.mas_equalTo(100);
    }];

demo地址

demo 地址:lineView

相关文章

  • 左右文本,右侧可动态

    前言 如上图,经常会有各种需求,比如右侧文本对齐方式(左右对齐),右侧文本的行数限定(可以限制无限行,也可以限制行...

  • iOS 侧滑

    ViewDeck 左右侧滑控件 MSDynamicsDrawerViewController iOS7 动态弹...

  • 左右侧

    左右侧 左侧,右侧这个词的使用,最早是知道是在股票买卖中。左侧就是在股票下跌过程中买入,在反弹时卖出,这叫抄底,存...

  • Jetpack Compose实现基础布局Flex对比Const

    实现此布局 分析:1.布局整体方式为左右布局,左侧图片 右侧文字 Row。 右侧文本 为上下布局,布局第一层为左右...

  • 界面右侧悬浮可伸缩动态按钮

    1.相关介绍 本文由来源https://www.axureshop.com/shop/3039,由卧枕江山整理编辑...

  • 左右侧的幸福

    认识很多异性却如同流星, 匆匆来过又极速离开 谈的来却说不上聊得入心。 难得为了一个她动了真情, 缘份徘徊左右很淘...

  • swift左右侧滑

    括号外面的: private lazy var pageTitleView: MFPageTitleView = ...

  • 轻松集成左右侧滑

    导读 左右侧滑是App开发中非常常见的功能,目前大部分App都有实现这个功能. 为提高开发效率,笔者对左右侧滑功能...

  • 左右侧滑菜单swift

    可以只传入左菜单参数,也可以只传入右菜单参数,也可以同时传入左右菜单,都支持。(先有oc版,再写的swift版) ...

  • iOS 改变左右侧距离

    (void) initNavBar{UIButton *addBtn = [[UIButton alloc] in...

网友评论

      本文标题:左右文本,右侧可动态

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