ZLLayoutButton 是一个继承自 UIButton 的自定义按钮,支持灵活的图文混排布局。通过简单的属性配置即可实现图片与文字的水平/垂直排列、顺序切换、间距调整等常见需求,完整支持 Auto Layout。
- ✅ 支持水平和垂直两种图文排列方向
- ✅ 支持图片在前或文字在前的顺序切换
- ✅ 支持自定义图文间距
- ✅ 支持弹性间距模式,图文自动撑满按钮宽度/高度
- ✅ 支持交叉轴对齐方式(居中 / 起始 / 末尾)
- ✅ 支持自定义内边距 (
layoutEdgeInsets) - ✅ 支持固定图片大小 (
layoutImageSize) - ✅ 完整支持
intrinsicContentSize,与 Auto Layout 无缝配合 - ✅ 支持 Interface Builder (
initWithCoder)
在 Podfile 中添加:
pod 'ZLLayoutButton'然后执行:
pod install#import <ZLLayoutButton/ZLLayoutButton.h>ZLLayoutButton *button = [[ZLLayoutButton alloc] init];
button.layoutImage = [UIImage imageNamed:@"icon"];
button.layoutTitle = @"按钮文字";
button.layoutTitleFont = [UIFont systemFontOfSize:14];
button.layoutTitleColor = [UIColor darkTextColor];button.layoutAxis = ZLLayoutButtonAxisHorizontal;
button.layoutOrder = ZLLayoutButtonOrderImageFirst;
button.layoutSpacing = 8;button.layoutAxis = ZLLayoutButtonAxisVertical;
button.layoutOrder = ZLLayoutButtonOrderTitleFirst;
button.layoutSpacing = 6;button.layoutImageSize = CGSizeMake(24, 24);button.layoutEdgeInsets = UIEdgeInsetsMake(8, 12, 8, 12);启用后图片与文字之间的间距会自动撑满可用空间,layoutSpacing 作为最小间距:
button.flexibleSpacing = YES;button.layoutContentAlignment = ZLLayoutButtonContentAlignmentStart; // 起始对齐
button.layoutContentAlignment = ZLLayoutButtonContentAlignmentCenter; // 居中(默认)
button.layoutContentAlignment = ZLLayoutButtonContentAlignmentEnd; // 末尾对齐| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
layoutAxis |
ZLLayoutButtonAxis |
Horizontal |
排列方向:水平 / 垂直 |
layoutOrder |
ZLLayoutButtonOrder |
ImageFirst |
图文顺序:图片在前 / 文字在前 |
layoutContentAlignment |
ZLLayoutButtonContentAlignment |
Center |
交叉轴对齐方式 |
layoutSpacing |
CGFloat |
4 |
图文间距 |
flexibleSpacing |
BOOL |
NO |
是否启用弹性间距 |
layoutEdgeInsets |
UIEdgeInsets |
UIEdgeInsetsZero |
内边距 |
layoutImageSize |
CGSize |
CGSizeZero |
固定图片大小(零则使用原始大小) |
layoutImage |
UIImage * |
nil |
便捷设置 Normal 状态图片 |
layoutTitle |
NSString * |
nil |
便捷设置 Normal 状态标题 |
layoutTitleFont |
UIFont * |
nil |
便捷设置字体 |
layoutTitleColor |
UIColor * |
nil |
便捷设置 Normal 状态字体颜色 |
- iOS 10.0+
- Objective-C
ZLLayoutButton 基于 MIT 许可证开源,详情请参阅 LICENSE 文件。