java学习视频 定义键盘快捷键 Redis sqlite xamarin 建造师报考条件 vue官方下载 vue引入组件 ddos压力测试 河南网络推广 vue教学视频 less使用 mysql分页查询sql语句 matlab中如何定义函数 dwf文件怎么转成dwg python参数 python平台 python打开文件夹 python安装程序 javasubstring java编程环境 java方法重载 java获取当前ip java遍历 谷歌地球打不开 pyh 自动喊话器 robotstudio 蓝牙测试软件 远程桌面管理软件 工信部手机入网查询 明解c语言 论文修改软件 微信公众号点餐系统 视频字幕制作软件 win7仿win8主题 b450 mmap文件怎么打开 混凝土配合比计算软件 su镜像
当前位置: 首页 > 学习教程  > 编程学习

[iOS微博项目 - 4.5] - 每条微博的底部工具条

2021/1/9 2:08:00 文章标签: 微博取消赞

github: https://github.com/hellovoidworld/HVWWeiboA.每条微博的底部工具条1.需求每条微博底部都有一个工具条显示3个按钮:评论、转发、赞按钮间用分割线隔开有评论数、转发数、赞数的时候显示相应数据,没有则显示文本 2.思路(略&#xff0…

github: https://github.com/hellovoidworld/HVWWeibo
A.每条微博的底部工具条
1.需求
  • 每条微博底部都有一个工具条
  • 显示3个按钮:评论、转发、赞
  • 按钮间用分割线隔开
  • 有评论数、转发数、赞数的时候显示相应数据,没有则显示文本
 
Image(158)
 
2.思路
(略)
 
3.实现
 
(1)微博数据模型中已经带有了相应数据字段
 1 //  HVWStatus.h
 2 /** int 转发数 */
 3 @property(nonatomic, assign) int reposts_count;
 4 
 5 /** int 评论数 */
 6 @property(nonatomic, assign) int comments_count;
 7 
 8 /** int 表态数 */
 9 @property(nonatomic, assign) int attitudes_count;
10  
 
(2)直接在toolbar view中,在设置status数据的时候处理
  1 //
  2 //  HVWStatusToolbar.m
  3 //  HVWWeibo
  4 //
  5 //  Created by hellovoidworld on 15/2/12.
  6 //  Copyright (c) 2015年 hellovoidworld. All rights reserved.
  7 //
  8 
  9 #import "HVWStatusToolbar.h"
 10 
 11 @interface HVWStatusToolbar()
 12 
 13 /** 按钮数组 */
 14 @property(nonatomic, strong) NSMutableArray *buttons;
 15 
 16 /** 分割线数组 */
 17 @property(nonatomic, strong) NSMutableArray *divides;
 18 
 19 /** 转发按钮 */
 20 @property(nonatomic, strong) UIButton *repostButton;
 21 
 22 /** 评论按钮 */
 23 @property(nonatomic, strong) UIButton *commentButton;
 24 
 25 /** 点赞按钮 */
 26 @property(nonatomic, strong) UIButton *attitudeButton;
 27 
 28 @end
 29 
 30 @implementation HVWStatusToolbar
 31 
 32 - (NSMutableArray *)buttons {
 33     if (nil == _buttons) {
 34         _buttons = [NSMutableArray array];
 35     }
 36     return _buttons;
 37 }
 38 
 39 - (NSMutableArray *)divides {
 40     if (nil == _divides) {
 41         _divides = [NSMutableArray array];
 42     }
 43     return _divides;
 44 }
 45 
 46 /** 代码自定义初始化方法 */
 47 - (instancetype)initWithFrame:(CGRect)frame {
 48     self = [super initWithFrame:frame];
 49    
 50     if (self) {
 51         // 设置toolbar背景
 52         self.image = [UIImage resizedImage:@"timeline_card_bottom_background"];
 53        
 54         // 为了按钮能够点击,设置父控件可交互
 55         self.userInteractionEnabled = YES;
 56        
 57         // 添加按钮
 58         self.commentButton = [self setupButtonWithIcon:@"timeline_icon_comment" title:@"评论"];
 59         self.repostButton = [self setupButtonWithIcon:@"timeline_icon_retweet" title:@"转发"];
 60         self.attitudeButton = [self setupButtonWithIcon:@"timeline_icon_unlike" title:@""];
 61        
 62         // 添加分割线
 63         [self setupDivides];
 64     }
 65    
 66     return self;
 67 }
 68 
 69 // 设置按钮
 70 - (UIButton *) setupButtonWithIcon:(NSString *)icon title:(NSString *)title {
 71     UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
 72     // 标题
 73     [button setTitle:title forState:UIControlStateNormal];
 74     // 图片
 75     [button setImage:[UIImage imageWithNamed:icon] forState:UIControlStateNormal];
 76     // 字体颜色
 77     [button setTitleColor:[UIColor grayColor] forState:UIControlStateNormal];
 78     // 字体大小
 79     button.titleLabel.font = [UIFont systemFontOfSize:14];
 80     // 图标、文本之间间隙
 81     [button setTitleEdgeInsets:UIEdgeInsetsMake(0, 15, 0, 0)];
 82     // 高亮背景
 83     [button setBackgroundImage:[UIImage imageWithNamed:@"timeline_card_bottom_background_highlighted"] forState:UIControlStateHighlighted];
 84     // 取消高亮图片调整效果
 85     [button setAdjustsImageWhenHighlighted:NO];
 86    
 87     // 加入到view中
 88     [self addSubview:button];
 89     [self.buttons addObject:button];
 90    
 91     return button;
 92 }
 93 
 94 // 设置分割线
 95 - (void) setupDivides {
 96     for (int i=1; i<self.buttons.count; i++) {
 97         UIImageView *divide = [[UIImageView alloc] init];
 98         divide.image = [UIImage imageWithNamed:@"timeline_card_bottom_line"];
 99         divide.contentMode = UIViewContentModeCenter;
100        
101         [self addSubview:divide];
102         [self.divides addObject:divide];
103     }
104 }
105 
106 /** 设置Frame模型 */
107 - (void)setToolbarFrame:(HVWStatusToolbarFrame *)toolbarFrame {
108     _toolbarFrame = toolbarFrame;
109    
110     // 设置自己的frame
111     self.frame = toolbarFrame.frame;
112    
113     // 配置toolbar按钮数据
114     [self setupToolBarButton];
115 }
116 
117 
118 // 设置子控件frame
119 - (void)layoutSubviews {
120     [super layoutSubviews];
121    
122     // 配置按钮frame
123     CGFloat buttonWidth = self.width / self.buttons.count;
124     CGFloat buttonHeight = self.height;
125     CGFloat buttonY = 0;
126     for (int i=0; i<self.buttons.count; i++) {
127         CGFloat buttonX = i * buttonWidth;
128         UIButton *button = self.buttons[i];
129        
130         button.frame = CGRectMake(buttonX, buttonY, buttonWidth, buttonHeight);
131     }
132    
133     // 配置分割线frame
134     CGFloat divideWidth = 4;
135     CGFloat divideHeight = self.height;
136     for (int i=0; i<self.divides.count; i++) {
137         CGFloat divideX = (i + 1) * buttonWidth;
138         UIImageView *imageView = self.divides[i];
139         imageView.size = CGSizeMake(divideWidth, divideHeight);
140         imageView.center = CGPointMake(divideX, self.height * 0.5);
141     }
142 }
143 
144 /** 设置toolbar按钮数据 */
145 - (void) setupToolBarButton {
146     HVWStatus *status = self.toolbarFrame.status;
147    
148     // 评论
149     [self setupButtonTitle:self.commentButton withOriginalTitle:@"评论" titleCount:status.comments_count];
150    
151     // 转发
152     [self setupButtonTitle:self.repostButton withOriginalTitle:@"转发" titleCount:status.reposts_count];
153    
154     // 点赞
155     [self setupButtonTitle:self.attitudeButton withOriginalTitle:@"" titleCount:status.attitudes_count];
156 }
157 
158 /** 设置按钮标题 */
159 - (void) setupButtonTitle:(UIButton *) button withOriginalTitle:(NSString *)buttonTitle titleCount:(int)titleCount {
160     // 当数量超过1万的时候,使用“万”作为单位
161     if (titleCount >= 10000) {
162         buttonTitle = [NSString stringWithFormat:@"%.1f万", (titleCount / 10000.0)];
163         buttonTitle = [buttonTitle stringByReplacingOccurrencesOfString:@".0" withString:@""]; // 去除".0"小数
164     } else if (titleCount) {
165         buttonTitle = [NSString stringWithFormat:@"%d", titleCount];
166     }
167    
168     [button setTitle:buttonTitle forState:UIControlStateNormal];
169 }
170  
171 @end

 

 

转载于:https://www.cnblogs.com/hellovoidworld/p/4311084.html


本文链接: http://www.dtmao.cc/news_show_1100326.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?