打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
51、来源的改进和toolbar
一、对于时间的frame,需要在HMStatusOriginalView中计算,因为这个时间的frame需要时时计算。而在先前的HMHomeViewController中是只计算一次的,这样的label显示时间的label只有两个中文的宽度。

1.HMStatusOriginalView时时进行计算。

   

#warning 需要时刻根据现在的时间字符串来计算时间labelframe

    // 3.时间

    NSString *time = status.created_at;

    self.timeLabel.text = time; // 刚刚 --> 1分钟前 --> 10分钟前

    CGFloat timeX = CGRectGetMinX(self.nameLabel.frame);

    CGFloat timeY = CGRectGetMaxY(self.nameLabel.frame) + HMStatusCellInset * 0.5;

    CGSize timeSize = [time sizeWithFont:HMStatusOrginalTimeFont];

    self.timeLabel.frame = (CGRect){{timeX, timeY}, timeSize};

    

    // 4.来源

    self.sourceLabel.text = status.source;

    CGFloat sourceX = CGRectGetMaxX(self.timeLabel.frame) + HMStatusCellInset;

    CGFloat sourceY = timeY;

    CGSize sourceSize = [status.source sizeWithFont:HMStatusOrginalSourceFont];

    self.sourceLabel.frame = (CGRect){{sourceX, sourceY}, sourceSize};




二、改进。
每次上拉,下拉cell的时候,都会调用setFrame方法。这样就会每次计算时间,来源了。因为时间才去get方法,是因为需要写在微博的文字的时间提醒是随着时间而变化的。

对于来源,不需要每次都进行调用。每次调用方法,截取来源,耗内存。
来源是固定的。

改进:写source的set方法。这样就不会调用很频繁了。

- (void)setSource:(NSString *)source

{

    // 截取范围

    NSRange range;

    range.location = [source rangeOfString:@">"].location + 1;

    range.length = [source rangeOfString:@"</"].location - range.location;

    // 开始截取

    NSString *subsource = [source substringWithRange:range];

    _source = [NSString stringWithFormat:@"来自%@", subsource];

}

三、toolbar。设置toolbar的背景色。这里HMStatusToolBar直接继承UIImageVIew.这样比较简单写。

toolbar里加三个按钮。三个按钮是有间隔的。


对于按钮和分割线,要分开来算。这里弄两个数组,强引用,懒加载,不用关心什么时候有数组了,随心随意使用。


点击按钮进入别的导航器,

需要设置。self.userInteractionEnabled = YES;

- (id)initWithFrame:(CGRect)frame()方法中若没有设置frame,控件不会显示。



可以在- (void)layoutSubviews中设置控件的frame。


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
[转载]CGRectInset、CGRectOffset、等对比整理
自定义cell中自适应高度
iOS开发 系统自带二维码扫描和限定扫描区域
IOS详解TableView——实现九宫格效果
iOS开发经验总结(上)
ios开发实战
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服