IOS 纯代码自定义UIView案例

objectivec 复制代码
#import <UIKit/UIKit.h>

NS_ASSUME_NONNULL_BEGIN

@interface OrderAfterPeriodSelectNumView : UIView
//左边标题
@property (nonatomic,strong) UILabel *titleLab;
//数量
@property (nonatomic,strong) UILabel *numLab;

@end
objectivec 复制代码
#import "OrderAfterPeriodSelectNumView.h"
@interface OrderAfterPeriodSelectNumView()
@property (nonatomic, assign) CGFloat titleLabWidth;
@end

@implementation OrderAfterPeriodSelectNumView

#pragma mark - 原始初始化方法

// 1、首先调用init方法
- (instancetype)init{
    if (self = [super init]) {
        [self initUI];
    }
    return self;
}
  
// 2、然后调用initWithFrame方法
- (instancetype)initWithFrame:(CGRect)frame{
    if (self =[super initWithFrame:frame]) {
        [self initUI];
    }
    return self;
}
// 初始化UI控件
- (void) initUI{
    UILabel *titleLab = [[UILabel alloc] init];
    titleLab.textColor = [UIColor colorWithHexString:@"333333"];
    titleLab.font = [UIFont systemFontOfSize:14];
    titleLab.textAlignment = NSTextAlignmentLeft;
    titleLab.text = @"退款数量";
    [self addSubview:titleLab];
    _titleLab = titleLab;
    
    UILabel *numLab = [[UILabel alloc] init];
    titleLab.textColor = [UIColor colorWithHexString:@"333333"];
    numLab.font = [UIFont systemFontOfSize:14];
    numLab.textAlignment = NSTextAlignmentRight;
    numLab.text = @"0";
    [self addSubview:numLab];
    _numLab = numLab;
    //获取字符串的宽高
    CGRect rect = [titleLab.text boundingRectWithSize:CGSizeMake(SCREENWIDTH, MAXFLOAT) options:NSStringDrawingTruncatesLastVisibleLine | NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName: [UIFont systemFontOfSize:14]} context:nil];
    _titleLabWidth = rect.size.width;

}
// 设置UI控件的frame
- (void)layoutSubviews{
    [super layoutSubviews];
    // 1.获取当前控件的尺寸
    CGFloat width = self.frame.size.width;
    CGFloat height = self.frame.size.height;
    
    // 2.设置子控件的frame
    self.titleLab.frame = CGRectMake(16, 0, self.titleLabWidth, height);
    self.numLab.frame = CGRectMake(16+self.titleLabWidth, 0, width - (16+self.titleLabWidth+16), height);
    
}

@end

添加到UIStackView

objectivec 复制代码
OrderAfterPeriodSelectNumView *numView = [[OrderAfterPeriodSelectNumView alloc] init];
[numView mas_makeConstraints:^(MASConstraintMaker *make) {
     make.height.equalTo(@(50));
 }];
self.numView = numView;
[self.stackView addArrangedSubview:numView];
相关推荐
kkk_皮蛋3 小时前
在移动端使用 WebRTC (Android/iOS)
android·ios·webrtc
Swift社区4 小时前
如何在 SwiftUI 中对 CoreImage 滤镜做实时预览
ios·swiftui·cocoa
李玮豪Jimmy7 小时前
MacOS 上安装 JDK 并实现多版本灵活切换
macos
mixboot7 小时前
VoxCPM 1.5.0 macOS
macos·voxcpm
甜可儿7 小时前
mac环境安装不同版本maven
java·macos·maven
bl4ckpe4ch7 小时前
从零开始Mac OS 开荒整理笔记
笔记·macos·开荒
ipad协议开发7 小时前
企业微信iPad协议的开发进程
ios·企业微信·ipad
七月巫山晴7 小时前
【iOS】OC中的一些宏
前端·ios·objective-c
初级代码游戏17 小时前
iOS开发 SwiftUI Text的基本用法
ios·swiftui·swift
TheNextByte11 天前
如何安全有效地清除iPad数据以便出售?
安全·ios·ipad