WeiBo开发经历(下)

简介: WeiBo开发经历(下)

技术24.版本特性指什么??四舍五入(int)(number+0.5)(只适用1位小数)


  • 分析:版本顾名思义就是程序的新版本,也可以理解为首页登录的导航图
  • 具体的做法,进行了封装。存到github上面了,可以查看,稍后附上链接

里面会涉及到四舍五入(只适用1位小数),具体的做法是,四舍五入:加0.5再强转,如(int)(number+0.5)


举个例子:

原数        加0.5     求和      舍去小数(得到四舍五入的数字)
 1.3     1.3+0.5     =    1.8        1
 1.5     1.5 +0.5    =    2.0        2
 1.6     1.6 + 0.5   =    2.1        2
 0.7     0.7 + 0.5   =    1.2        1

四舍五入(只适用1位小数) 如果是1.66 ,则(1.66+0.5)*10取整,再取一位小数,再按照上面的


技术25.如果发现一个控制器添加到另外一个控制器,但是它的数据却没有了?怎么解决??那么把一个控制器添加到另外一个控制器又有什么价值呢???


  • 分析:极大可能是因为控制器被提前销毁了(俗称程序控制器坏死)

解决办法:需要定义下面的控制器属性

先定义    
@property(nonatomic,strong)MeasageViewController *measageViewController;
再懒加载
-(MeasageViewController *)measageViewController
{
if (!_contactViewController) {
    _measageViewController = [[MeasageViewController alloc]init];
    _measageViewController.view.frame = self.view.frame;
}
    return _measageViewController;
}

最后在viewDidLoad 添加就好了


  • 需要注意的地方:控制器的view还在,但是view上面的数据不显示,极大可能是因为控制器被提前销毁了
  • 1.一个控制器的view是可以随意调整尺寸和位置的
  • 2.一个控制器的view是可以随意添加到其他view中
  • 3.如果将一个控制器的view,添加到其他view中显示,那么要想办法保证不被销毁
  • 4.原则:只要view在,view所在的控制器必须的在,这样才能保证view内部的数据和业务逻辑正常


技术26:关于图片的一些设置以及加载方式‘


解析:


程序启动会自动加载叫做Default.png的图片
3.5inch retain 屏幕:Default@2x.png
3.5inch 非retain屏幕:Default.png
4.0inch retain 屏幕:Default-568h@2x.png
只有程序启动时自动去加载的图片才会查找-568h@2x.png

技术27.点击切换一个Button两种状态下的图片


分析:效果图


image.png


image.png

点击后的图片


  • 解决办法:设置两张图片,分别为选中UIControlStateSelected和未选中下UIControlStateNormal


比如下面的代码:

UIButton  *_shareBtn = [[UIButton alloc]init];
  _shareBtn.frame = CGRectMake(CWKWindowWidth*(KImageCount-1)+CWKWindowWidth*0.5-93,CWKWindowHeight*0.7, 186, 42.5);
  [_shareBtn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
  [_shareBtn setImage:[UIImage imageNamed:@"unchecked_checkbox"] forState:UIControlStateNormal];
  [_shareBtn setImage:[UIImage imageNamed:@"checked_checkbox"] forState:UIControlStateSelected];
  [_shareBtn setTitle:@"分享" forState:UIControlStateNormal];
  [_shareBtn addTarget:self action:@selector(shareClick:) forControlEvents:UIControlEventTouchUpInside];
 -(void)shareClick:(UIButton *)shareBtn
 {
     shareBtn.selected = !shareBtn.isSelected;
 }
  • 重点代码:shareBtn.selected = !shareBtn.isSelected;


技术28.       如何让图片和分享这两个字有一定的距离??


分析:在button上面加载图片用image,而button上面覆盖图片用backgroundImage,在此要用到titleEdgeInsets这个属性,用法如下:

image.png

  • 具体的用法(有关button里面三种属性的用法,以及区别)
    //1.contentEdgeInsets:(自切:切除的就不能用了,也就是不能放东西)会影响按钮内部的所有内容(里面的imageView和titleLabel)
    //切多少就有多少不能被用,相当于留出多余的面积
    //button.contentEdgeInsets = UIEdgeInsetsMake(10, 0, 0, 0);
    //2.titleLabelEdgeInsets 只影响按钮内部的titleLabel
    button.titleEdgeInsets = UIEdgeInsetsMake(5,20, 0, 0);
    //3.imageEdgeInsets 只影响按钮内部的imageView


  • button.imageEdgeInsets = UIEdgeInsetsMake(20,0, 0, 50);


技术29.一个空间看不见的可能性有哪些???


  • 分析:如下可能性很多


/*
 * 1.根本没有创建实例化这个控件
 *
 * 2.没有设置尺寸 UIPageControl没设置尺寸也会出来
 *
 * 3.控件的颜色可能跟父控件的颜色一样
 *
 * 4.控件的透明度为alpha <= 0.01;
 *
 * 5.hidden = YES 
 *
 * 6.没有添加到父控件中
 *
 * 7.这个控件被其他控件挡住了
 *
 * 8.位置不对(指坐标)
 *
 * 9.父控件发生了以上的情况
 *
 * 10.特殊情况:image设置了,但是图片没有设置,就无法显示
 *
 * UIImageView没有设置image属性,或者设置的图片名字不对
 * 
 * UILabel没有设置文字,或者文字的颜色和父控件的颜色一样
 *
 * UITextFiled没有设置文字,或者没有设置边框样式borderStyle
 *
 * UIPageControl没有设置页码,不会显示小圆点
 *
 * UIButton内部imageView和titleLabel的frame被篡改了,或者imageView和titlleLabel没有内容
 *
 */


技术30.如何让UITextView大文本输入框一直可以显示内容且内容一直会显示最后一行的内容?


image.png

  • 分析: 只需要让文本内容一直叠加换行。最主要的是显示最后一行


定义三个全局的变量:

int count;

NSTimer *timer;

UITextView *textView;//之后执行下面的

{
     timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(updateTime) userInfo:nil repeats:YES];
     count = 0;
     textView = [[UITextView alloc]initWithFrame:self.view.bounds];
     textView.font = [UIFont systemFontOfSize:25];
     [self.view addSubview:textView];
  }
  -(void)updateTime
  {
       count ++;
       NSLog(@"%d",count);
        NSString *text = textView.text;
        textView.text = [text stringByAppendingFormat:@"%d \n",count];
        NSRange range;
       range.length = textView.text.length;
       [textView scrollRangeToVisible:range];
   }


技术31.版本新特性如何设定??(也就是新手导航与版本更新)


image.png

image.png

  • 具体的代码
Appdelegate.m 里面
//1.重写window
 self.window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];
 //2.设置根控制器
 //获取上一次的使用版本 (储存在沙盒中的版本号)
NSString *lastVersion = [[NSUserDefaults standardUserDefaults] objectForKey:@"CFBundleVersion"];
 //当前软件的版本号(从info.plist中获取)两种写法
 //1.NSString *currentVersion =  [NSBundle mainBundle].infoDictionary[@"CFBundleVersion"];
 NSDictionary *info = [NSBundle mainBundle].infoDictionary;
 //当前的version
 NSString *currentVersion = info[@"CFBundleVersion"];
 NSLog(@"%@",currentVersion);
//只要不相等就是新特性
if ([lastVersion isEqualToString:currentVersion]) {//版本号相同:这次打开和上次打开始同一个版本
        self.window.rootViewController = [[RootTabBarController alloc]init];
}
else//这次打开的版本和上次不一样,显示新的特性
{
      //将当前的版本号存进沙盒
      [[NSUserDefaults standardUserDefaults] setObject:currentVersion forKey:@"CFBundleVersion"];
     //立马把版本号存进去.不可少,少了可能出问题
     [[NSUserDefaults standardUserDefaults] synchronize];//synchronize |ˈsɪŋkrənaɪz| 使同步,使同时发生
     self.window.rootViewController = [[NewViewController alloc]init];
}
//3.显示window
[self.window makeKeyAndVisible];
  • //在新特性控制器里面 (点击button走这里)
-(void)clickNewController
{
  //    //获取到应用程序的delegate
  //    AppDelegate *delegate = [UIApplication sharedApplication].delegate;
  //    [delegate startChange];
  /*切换控制器的手段
    *
    * 1.push :依赖于UINavigationController,控制器的切换是可逆的,比如A切换到B,B又可以回到A
    *
    * 2.model:控制器的切换是可逆的,比如A切换到B,B又可以回到A,而且新特性又不可释放,占据内存
    *
    * 3.切换window的rootController,而且不可逆,且新特性的控制器被销毁
    *
    */
   UIWindow *window = [UIApplication sharedApplication].keyWindow;
   window.rootViewController = [[RootTabBarController alloc]init];
}

技术32.微博数据请求的一些要求???

什么样的应用才有资格被用户授权?
 1.注册一个新浪微博账号,成为新浪的开发者,
 2.登录开发者主页http://open.weibo.com/,创建一个应用
 3.创建完成后,会获得以下主要信息
 1>AppKey:应用的唯一标识,相当于应用的身份证
 2>APPsecret:
 3>RedirectURI(回调地址)

技术33.OAuth授权步骤


  • 第三方想访问服务提供商的用户资源时,需要先进行OAuth授权
  • OAuth授权的步骤总结就3点:
  • 1.获取未经授权的Request Token
  • 2.获取用户授权的Request Token
  • 3.用户授权的Request Token换取 Access Token(授权标记)
    (得到这个Access Token 就相当于得到了一个“令牌”,通过此“令牌”请求,就可以去拥有资源的网站抓取任意有权限可以被抓取的资源)
  • 对上面的解释


image.png


image.png



下面是具体的步骤:


image.png

image.png

image.png


技术34.请求出现的错误(分析)



image.png


分析:这种问题表示参数传错了或者是没有传参数

目录
相关文章
|
JavaScript PHP 数据安全/隐私保护
Python模拟登陆 —— 征服验证码 9 微博weibo.com
登录界面 抓包分析可以使用Http Analyzer,Filders,但是看起来很复杂,还是使用火狐好(chrome远远没有火狐好用)。 首先,在输入用户名后,会进行预登录,网址为:http://login.
1490 0
|
6天前
|
缓存 算法 自动驾驶
百度Cyber框架面试总结
百度Cyber框架面试总结
11 0
|
8月前
|
网络协议 架构师 数据中心
GitHub已标星93K!网易首席架构师闭关3月撰写1200页网络协议笔记
网络协议介绍 网络协议为计算机网络中进行数据交换而建立的规则、标准或约定的集合。
|
9月前
|
前端开发
前端学习笔记202306学习笔记第四十八天-热歌榜实现上-1
前端学习笔记202306学习笔记第四十八天-热歌榜实现上-1
28 0
前端学习笔记202306学习笔记第四十八天-热歌榜实现上-1
|
9月前
|
前端开发
前端学习笔记202306学习笔记第四十八天-热歌榜实现上-2
前端学习笔记202306学习笔记第四十八天-热歌榜实现上-2
25 0
|
JSON 前端开发 安全
《提效神器 Design Token 的探索与应用 - 昱星 & 元尧》演讲视频 + 文字版
《提效神器 Design Token 的探索与应用 - 昱星 & 元尧》演讲视频 + 文字版
229 0
|
移动开发 安全 小程序
即时通讯技术文集(第14期):WebSocket精华文章合集 [共15篇]
为了更好地分类阅读52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第14 期。
64 0
|
移动开发 开发框架 前端开发
即时通讯技术文集(第13期):Web端即时通讯技术精华合集 [共15篇]
为了更好地分类阅读52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第13 期。
96 0
|
SQL 开发框架 搜索推荐
你也可以是小hacker ,Google Hacking,好可怕的搜索引擎!
你也可以是小hacker ,Google Hacking,好可怕的搜索引擎!
152 0
你也可以是小hacker ,Google Hacking,好可怕的搜索引擎!
|
Windows
WeiBo开发经历(中)
WeiBo开发经历(中)
80 0
WeiBo开发经历(中)