新浪微博客户端(16)-获得并显示用户昵称

DJHomeViewController.m

- (void)updateTitleViewDisplayName {

    AFHTTPSessionManager *requestManager = [AFHTTPSessionManager manager];

    NSString *urlString = @"https://api.weibo.com/2/users/show.json";

    DJAccount *account = [DJAccountTool account];
    NSMutableDictionary *params = [NSMutableDictionary dictionary];
    params[@"access_token"] = account.access_token;
    params[@"uid"] = account.uid;

    [requestManager GET:urlString parameters:params progress:nil success:^(NSURLSessionDataTask * _Nonnull task, NSDictionary *  _Nullable dict) {
        // 存储当前用户昵称
        NSString *screen_name = dict[@"screen_name"];
        account.screen_name = screen_name;
        [DJAccountTool saveAccount:account];
        // 更新titleView显示昵称
        UIButton *titleView = (UIButton *)self.navigationItem.titleView;
        [titleView setTitle:screen_name forState:UIControlStateNormal];

    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        DJLog(@"获取用户信息失败");
    }];

}

DJTitleView.m

#import "DJTitleView.h"

@implementation DJTitleView

- (instancetype)initWithFrame:(CGRect)frame {

    self = [super initWithFrame:frame];
    if (self) {
        [self setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
        self.titleLabel.font = [UIFont systemFontOfSize:16];
        [self setImage:[UIImage imageNamed:@"navigationbar_arrow_down"] forState:UIControlStateNormal];
        [self setImage:[UIImage imageNamed:@"navigationbar_arrow_up"] forState:UIControlStateSelected]; // 设置选中状态
        self.imageView.backgroundColor = [UIColor clearColor];
    }
    return self;
}

- (void)layoutSubviews {

    [super layoutSubviews];

    // 将按钮内部的imageView和titleLabel的位置对调,实现图标指示器在右侧的效果。
    self.titleLabel.x = self.imageView.x;
    self.imageView.x = CGRectGetMaxX(self.titleLabel.frame) + 4;

}

@end

最终效果:

时间: 2024-10-09 22:58:41

新浪微博客户端(16)-获得并显示用户昵称的相关文章

新浪微博客户端(28)-格式化日期显示

DJStatus.m #import "DJStatus.h" #import "MJExtension.h" #import "DJPhoto.h" @implementation DJStatus + (NSDictionary *)mj_objectClassInArray { return @{@"pic_urls":[DJPhoto class]}; } // 格式化返回日期 - (NSString *)create

用户昵称与绑定账号的隐私显示

var third_name="哈利路亚";//用户昵称 var third_account="[email protected]" function getThirdNameInfo() { let nameLength = third_name.length;//获取用户昵称长度 if (nameLength == 2) { third_name = third_name.substr(0, 1) + '*'; } else if (nameLength <

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

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

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新浪微博客户端(七)——ListView中的图片异步加载、缓存

原文出自:方杰|http://fangjie.sinaapp.com/?p=193转载请注明出处 最终效果演示:http://fangjie.sinaapp.com/?page_id=54该项目代码已经放到github:https://github.com/JayFang1993/SinaWeibo 一.ListView的图片异步加载 我们都知道对每一个Weibo Item都有用户头像,而且每一条微博还可能带有图片.如果在加载列表的同时加载图片,这样有几个缺点,第一很费事,界面卡住,用户体验很不

android 新浪微博客户端的表情功能的实现

这是一篇好文章,我转来收藏,技术的最高境界是分享. 最近在搞android 新浪微博客户端,有一些心得分享弄android客户端表情功能可以用以下思路1.首页把新浪的表情下载到本地一文件夹种,表情图片的命名要用新浪微博表情原来的命名比如 新浪的害羞表情是shame.gif 那么你在本地也得命名为shame.gif,命名相同主要是为了能够匹配表情对应的code.2.把本地的表情都放进android的资源文件里----drawable下面3.访问新浪的表情接口(新浪返回的数据类型有json和xml两

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

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

mysql 微信用户昵称emoji 完整保存

微信用户昵称现在丰富多样,一些个性的名称中经常包含有特殊字符,以及emoji表情.起先,我总以为mysql只能保存纯文本数据.但其实mysql(5.7版本)已非常强大,完整保存微信用户昵称(emoji表情)已不在话下. 起先,我的项目是无法保存这些含有emoji表情的昵称.为了鲜明的对比前后我做出的调整,先来看看之前的状况. 1.mysql表字段定义 `third_name` varchar(255) CHARACTER SET utf8 DEFAULT NULL COMMENT '用户第三方账

Servlet—Cookie(显示用户上次访问时间、显示商品浏览历史)

1 . 什么是会话? 会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. 1.1 会话过程中要解决的一些问题? 每个用户在使用浏览器与服务器进行会话的过程中,不可避免各自会产生一些数据,程序要想办法为每个用户保存这些数据. 例如:用户点击超链接通过一个servlet购买了一个商品,程序应该想办法保存用户购买的商品,以便于用户点结帐servlet时,结帐servlet可以得到用户购买的商品为用户结帐. 思考:用户购买的商品保存在r