新浪微博客户端(25)-添加转发微博

DJStatusCell.m

/* 转发微博部分 */

/** 转发微博整体 */
@property (nonatomic,weak) UIView *retweetView;
/** 转发微博内容 */
@property (nonatomic,weak) UILabel *retweetContentLabel;
/** 转发微博图片 */
@property (nonatomic,weak) UIImageView *retweetPhotoView;
#pragma mark - 转发微博
- (void)setupRetweetView {
    // 转发微博整体
    UIView *retweetView = [[UIView alloc] init];
    [self.contentView addSubview:retweetView];
    self.retweetView = retweetView;
    retweetView.backgroundColor = DJColor(240, 240, 240);
//    retweetView.backgroundColor = [UIColor redColor];

    // 转发微博内容
    UILabel *retweetContentLabel = [[UILabel alloc] init];
    [retweetView addSubview:retweetContentLabel];
    self.retweetContentLabel = retweetContentLabel;
    retweetContentLabel.font = DJStatusCellRetweetContentFont;
    retweetContentLabel.numberOfLines = 0; // 允许多行显示

    // 转发微博图片
    UIImageView *retweetPhotoView = [[UIImageView alloc] init];
    [retweetView addSubview:retweetPhotoView];
    self.retweetPhotoView = retweetPhotoView;
}
/* 转发微博 */
    DJStatus *retweetedStatus = status.retweeted_status;
    if (retweetedStatus) { // 如果有转发微博
        self.retweetView.hidden = NO;
        DJUser *retwetedUser = retweetedStatus.user;

        // 转发微博内容
        self.retweetContentLabel.frame = statusFrame.retweetContentLabelF;
        self.retweetContentLabel.text = [NSString stringWithFormat:@"@%@: %@",retwetedUser.name,retweetedStatus.text];

        // 转发微博图片
        if (retweetedStatus.pic_urls.count) { // 如果有微博配图
            self.retweetPhotoView.hidden = NO;
            self.retweetPhotoView.frame = statusFrame.retweetPhotoViewF;
            DJPhoto *retweetPhoto = [retweetedStatus.pic_urls firstObject];
            [self.retweetPhotoView sd_setImageWithURL:[NSURL URLWithString:retweetPhoto.thumbnail_pic] placeholderImage:[UIImage imageNamed:@"timeline_image_placeholder"]];

        } else { // 没有微博配图
            self.retweetPhotoView.hidden = YES;
        }
        // 转发微博整体
        self.retweetView.frame = statusFrame.retweetViewF;

    } else { // 如果没有转发微博
        self.retweetView.hidden = YES;
    }
    

DJStatusCellFrame.h

/* 转发微博Frame */

/** 转发微博整体 */
@property (nonatomic,assign) CGRect retweetViewF;
/** 转发微博内容 */
@property (nonatomic,assign) CGRect retweetContentLabelF;
/** 转发微博图片 */
@property (nonatomic,assign) CGRect retweetPhotoViewF;

DJStatusCellFrame.m

/* 转发微博Frame */

    DJStatus *retweetedStatus = status.retweeted_status;

    if (retweetedStatus) { // 有转发微博
        DJUser *retweetedStatusUser = retweetedStatus.user;

        // 转发微博内容
        CGFloat retweetContentX = DJStatusCellMargin;
        CGFloat retweetContentY = DJStatusCellMargin;

        NSString *newContent = [NSString stringWithFormat:@"@%@: %@",retweetedStatusUser.name,retweetedStatus.text];
        CGSize retweetContentSize = [newContent sizeWithFont:DJStatusCellRetweetContentFont maxW:contentMaxW];
        self.retweetContentLabelF = (CGRect){{retweetContentX,retweetContentY},retweetContentSize};

        CGFloat retweetH;

        // 转发微博图片
        if (retweetedStatus.pic_urls.count) { // 有转发微博图片
            CGFloat retweetPhotoX = retweetContentX;
            CGFloat retweetPhotoY = CGRectGetMaxY(self.retweetContentLabelF) + DJStatusCellMargin;
            CGFloat retweetPhotoWH = 100;
            self.retweetPhotoViewF = CGRectMake(retweetPhotoX, retweetPhotoY, retweetPhotoWH, retweetPhotoWH);
            retweetH = CGRectGetMaxY(self.retweetPhotoViewF) + DJStatusCellMargin;
        } else { // 无转发微博图片
            retweetH = CGRectGetMaxY(self.retweetContentLabelF) + DJStatusCellMargin;
        }

        // 转发微博整体
        CGFloat retweetX = 0;
        CGFloat retweetY = CGRectGetMaxY(self.originalViewF);
        CGFloat retweetW = cellW;
        self.retweetViewF = CGRectMake(retweetX, retweetY, retweetW, retweetH);

        self.cellHeight = CGRectGetMaxY(self.retweetViewF);
    } else { // 无转发微博
        self.cellHeight = CGRectGetMaxY(self.originalViewF);
    }

最终效果:

时间: 2024-08-22 12:15:46

新浪微博客户端(25)-添加转发微博的相关文章

新浪微博客户端(26)-添加转发评论工具条

DJStatusToolBar.m #import "DJStatusToolBar.h" @interface DJStatusToolBar() // 存放所有按钮 @property (nonatomic,strong) NSMutableArray *btns; // 存放所有分割线 @property (nonatomic,strong) NSMutableArray *dividers; @end @implementation DJStatusToolBar - (NSM

新浪微博客户端(60)-离线缓存微博数据

很多应用在第一次加载时会读取前一次浏览的历史微博数据,只有当用户手动触发下拉刷新之后,才会去加载新的微博数据. 1.集成FMDB FMDB是在sqlite3的C语言查询函数基础上封装的一套OC的API,因此在使用之前需要首先导入libsqlite3.tbd. 2. 添加FMDB库 3. 参考代码: DJStatusDBHelper.h #import <Foundation/Foundation.h> @class DJStatus; @interface DJStatusDBHelper :

新浪微博客户端(21)-获取当前微博未读数并提示用户

HomeViewController.m - (void)viewDidLoad { [super viewDidLoad]; // 初始化NavigationItem [self initNavigationItem]; // 初始化TitleView [self initTitleView]; // 更新TitleView 显示名称 [self updateTitleViewDisplayName]; // 集成下拉刷新控件 [self setupPullToRefreshView]; //

Android新浪微博客户端(四)——添加多个账户及认证

原文出自:方杰| http://fangjie.sinaapp.com/?p=75 转载请注明出处 最终效果演示:http://fangjie.sinaapp.com/?page_id=54 该项目代码已经放到github:https://github.com/JayFang1993/SinaWeibo 二.获取用户信息并保存数据库 上面说到加载AuthActivity有两种情况,其中一种就是授权成功回调,在授权回调成功后我们就开始通过微博API获取用户信息了,然后保存数据库了.这一系列操作我采

新浪微博客户端(55)-高亮显示微博内容中的昵称,话题,超链接

DJStatus.h #import <Foundation/Foundation.h> @class DJUser; /** 微博 */ @interface DJStatus : NSObject /** 微博id */ @property (nonatomic,copy) NSString *idstr; /** 微博内容 */ @property (nonatomic,copy) NSString *text; /** 微博内容(带属性) */ @property (nonatomic

Android新浪微博获取评论信息、发表评论、转发微博等

首先前面一节中说过,获取用户的微博信息,这里简单介绍下获取微博的评论信息,以及对微博进行评论,转发微博等. OAuth认证,这里就不多说了, 我说名一下接口: 获取微博的评论列表接口: http://api.t.sina.com.cn/statuses/comments.json 我们这里需要把微博ID做为参数请求,这个ID我们可以根据前面一节解析用户的微博信息得到. 对微博进行评论接口:http://api.t.sina.com.cn/statuses/comment.json 我们需要把微博

Android新浪微博客户端(六)——Home界面的ListView

原文出自:方杰|http://fangjie.sinaapp.com/?p=184转载请注明出处 最终效果演示:http://fangjie.sinaapp.com/?page_id=54该项目代码已经放到github:https://github.com/JayFang1993/SinaWeibo 一.首先是ListView的adapter. 因为微博列表的Item不是规则的,比如说有些微博有转发子微博,有些没有,有些有图片,有些没有图片,所以说很不固定.这里就采用BaseAdapter,要自

android开发新浪微博客户端 完整攻略 [新手必读]

开始接触学习android已经有3个礼拜了,一直都是对着android的sdk文档写Tutorials从Hello World到Notepad Tutorial算是初步入门了吧,刚好最近对微博感兴趣就打算开发个android版本的新浪微博客户端作为练手项目,并且以随笔的方式详细的记录开发的全过程.本人对java语言以及eclipse Ide都是初次应用基本上属于边学边用,做移动设备上的东西也是第一次,总的来说属于无基础.无经验.无天赋的纯三无人员,还请广大同学们多多给予指点. 开发第一件事情,那

[Python爬虫] Selenium爬取新浪微博客户端用户信息、热点话题及评论 (上)

一. 文章介绍 前一篇文章"[python爬虫] Selenium爬取新浪微博内容及用户信息"简单讲述了如何爬取新浪微博手机端用户信息和微博信息. 用户信息:包括用户ID.用户名.微博数.粉丝数.关注数等. 微博信息:包括转发或原创.点赞数.转发数.评论数.发布时间.微博内容等. 它主要通过从文本txt中读取用户id,通过"URL+用户ID" 访问个人网站,如柳岩: http://weibo.cn/guangxianliuya 因为手机端数据相对精简简单,所以采用输