技术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两种状态下的图片
分析:效果图
点击后的图片
- 解决办法:设置两张图片,分别为选中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这个属性,用法如下:
- 具体的用法(有关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大文本输入框一直可以显示内容且内容一直会显示最后一行的内容?
- 分析: 只需要让文本内容一直叠加换行。最主要的是显示最后一行
定义三个全局的变量:
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.版本新特性如何设定??(也就是新手导航与版本更新)
- 具体的代码
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 就相当于得到了一个“令牌”,通过此“令牌”请求,就可以去拥有资源的网站抓取任意有权限可以被抓取的资源) - 对上面的解释
下面是具体的步骤:
技术34.请求出现的错误(分析)
分析:这种问题表示参数传错了或者是没有传参数