iOS学习总结

09.项目实战 百思不得姐 设置帖子圆形头像,最热评论处理,修复

2016-02-01  本文已影响508人  Liwx

@(iOS 项目实战)[项目实战]


目录


1.设置帖子头像

设置思路: 项目中多处用到设置圆形图片的功能,考虑封装生成圆形图片的分类UIImage+Circle.因为头像图片资源都是通过url获取,所以可以封装设置圆形头像分类,将使用SDWebImage获取图片的操作也封装到设置圆形头像分类中UIImageView+Header.

SDWebImage图片下载失败处理



Xcode插件安装路径


KSImageName添加自定义方法提示功能

01.Completions.plist文件配置图解.png

2.最热评论

分析: 如果服务器返回的数据有最热评论有数据,则需要显示最热评论,否则无需显示最热评论。最热评论中包含语音评论,需对语音评论处理。

最热评论

/**
 
// 服务器返回的JSON数据,其中包含用户名 + 评论内容
{
    content = "\U4e94\U767e\U5e74\U524d\U4e00\U4eba\U8e0f\U5e73\U5929\U754c\Uff0c\U4eca\U5929\U5341\U4e09\U4ebf\U4eba\U5e2e\U4f60\U8e0f\U5e73\U6625\U665a\U3002";
    ctime = "2016-01-28 16:54:32";
    "data_id" = 17032894;
    id = 42164160;
    "like_count" = 678;
    precid = 0;
    precmt =     (
    );
    preuid = 0;
    status = 0;
    user =     {
        id = 16413351;
        "is_vip" = 0;
        "personal_page" = "http://user.qzone.qq.com/DFA2DC83F91D296282FD922FA4C45181";
        "profile_image" = "http://qzapp.qlogo.cn/qzapp/100336987/DFA2DC83F91D296282FD922FA4C45181/100";
        "qq_uid" = "";
        "qzone_uid" = DFA2DC83F91D296282FD922FA4C45181;
        sex = f;
        username = "\U3001Just .";
        "weibo_uid" = "";
    };
    voicetime = 0;
    voiceuri = "";
}
 */


3.拖动触发按钮重复点击bug

03.重复点击bug.gif

4.苹果官方刷新控件

UIRefreshControl刷新控件

    // TODO: 1.使用系统的刷新控件UIRefreshControl, UIRefreshControl控件有个问题,在UIRefreshControl的刷新指示器
    // 正在刷新时切换到其他控制器,再返回控制器,会出现刷新指示器停止动画了.
    UIRefreshControl *header = [[UIRefreshControl alloc] init];
    [header addTarget:self action:@selector(loadNewTopics) forControlEvents:UIControlEventValueChanged];
    [self.tableView addSubview:header];
    self.header = header;

5.使用MJRefresh刷新框架

MJRefresh的使用

    // WXRefreshHeader.m
    // ----------------------------------------------------------------------------
    // 初始化子控件
    - (void)prepare
    {
        [super prepare];
        
        // ------------------------------------------------------------------------
        // 1.设置刷新控件属性
        // 1.1 设置自动改变透明度
        self.automaticallyChangeAlpha = YES;
        // 1.2 设置隐藏时间
        self.lastUpdatedTimeLabel.hidden = YES;
        // 1.3 设置状态文字颜色
        self.stateLabel.textColor = [UIColor orangeColor];
        
        // ------------------------------------------------------------------------
        // 2.设置刷新状态文字
        [self setTitle:@"下拉刷新" forState:MJRefreshStateIdle];
        [self setTitle:@"松开🐴上刷新" forState:MJRefreshStatePulling];
        [self setTitle:@"正在玩命刷新中..." forState:MJRefreshStateRefreshing];
        
        // ------------------------------------------------------------------------
        // 添加loginImageView
        UIImageView *loginImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"MainTitle"]];
        [self addSubview:loginImageView];
        self.loginImageView = loginImageView;
    }


    // ------------------------------------------------------------------------
    // 使用方式, 设置为tableView的mj_header属性,下拉刷新调用loadNewTopics方法加载网络数据.
    self.tableView.mj_header = [WXRefreshHeader headerWithRefreshingTarget:self refreshingAction:@selector(loadNewTopics)];
    // 开始刷新
    [self.tableView.mj_header beginRefreshing];

补充

AFNetworking的使用

使用第三方框架时子类化

使用第三方框架时如果能子类化,最好子类化封装第三方框架,这样如果第三方框架更新,只需更改自定义封装的子类即可.

github使用

05.查看使用的编程语言.png

点击后显示使用语言的比例

06.显示使用语言的比例.png 07.在release中下载指定版本.png

真机测试问题

上一篇 下一篇

猜你喜欢

热点阅读