新浪微博客户端(26)-添加转发评论工具条
DJStatusToolBar.m
#import "DJStatusToolBar.h" @interface DJStatusToolBar() // 存放所有按钮 @property (nonatomic,strong) NSMutableArray *btns; // 存放所有分割线 @property (nonatomic,strong) NSMutableArray *dividers; @end @implementation DJStatusToolBar - (NSMutableArray *)btns { if (!_btns) { _btns = [NSMutableArray array]; } return _btns; } - (NSMutableArray *)dividers { if (!_dividers) { _dividers = [NSMutableArray array]; } return _dividers; } + (instancetype)toolbar { return [[self alloc] init]; } - (instancetype)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { /* 添加转发等按钮 */ [self setupBtn:@"转发" image:@"timeline_icon_retweet"]; [self setupBtn:@"评论" image:@"timeline_icon_comment"]; [self setupBtn:@"赞" image:@"timeline_icon_unlike"]; /* 添加分割线 */ [self setupDivider]; [self setupDivider]; } return self; } // 添加按钮 - (void)setupBtn:(NSString *)title image:(NSString *)imageName { UIButton *btn = [[UIButton alloc] init]; [btn setTitle:title forState:UIControlStateNormal]; [btn setTitleColor:[UIColor grayColor] forState:UIControlStateNormal]; btn.titleLabel.font = [UIFont systemFontOfSize:14]; [btn setTitleEdgeInsets:UIEdgeInsetsMake(0, 8, 0, 0)]; [btn setImage:[UIImage imageNamed:imageName] forState:UIControlStateNormal]; [self addSubview:btn]; [self.btns addObject:btn]; } - (void)setupDivider { UIImageView *divider = [[UIImageView alloc] init]; divider.image = [UIImage imageNamed:@"timeline_card_bottom_line"]; [self addSubview:divider]; [self.dividers addObject:divider]; } - (void)layoutSubviews { [super layoutSubviews]; /* 设置按钮的frame */ NSUInteger btnCount = self.btns.count; CGFloat btnW = self.width / btnCount; CGFloat btnH = self.height; for (int i = 0; i < btnCount; i++) { UIButton *btn = self.btns[i]; btn.x = i * btnW; btn.y = 0; btn.width = btnW; btn.height = btnH; } /* 设置分割线的frame */ NSUInteger dividerCount = self.dividers.count; for (int i = 0; i < dividerCount; i++) { UIImageView *divider = self.dividers[i]; divider.width = 1; divider.height = btnH; divider.x = (i + 1) * btnW; divider.y = 0; } } @end
最终效果:
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库