提高iOS开发效率的小技巧与思路

先用一张图展示学习iOS开发应该掌握的知识体系:

1.全图片作为背景的时候,可能遇到的问题。,滑回的时候,图片停留了一会才滑回去。

原因: 这种界面一般使用一般用imageView的第三种填充方式。

这种填充方式可以让图片不被压缩变形的前提下,尽可能去填充整个控件,但是设置这个枚举的填充方式的时候,记得按照下图这样设置,将超出控件范围的给切割掉

设置约束的时候,记得选择currentview的那个对象

2.设备适配的问题

还是上面这张图片,按照设计在6p上面来设置自动约束,约好后,在5s上面的时候,下面的爱心在自动约束的设置下面和专业设置太近,这时候挺影响美观的,这时候第一反应当然是根据设备来进行调整,但是我觉得这里完全可以使用下面这种方式来进行判断设置

 CGFloat top = 0;
  CGFloat left = 0;
  CGFloat bottom = 0;
  CGFloat right = 0;

  if ([UIScreen ff_screenSize].width == 375) {

    top = 80;
    left = 70;
    bottom = 31;
    self.titleLabel.font = [UIFont systemFontOfSize:18];
    self.englishLabel.font = [UIFont systemFontOfSize:20];
    self.introduceLabel.font = [UIFont systemFontOfSize:14];
    right = 33;

  }else if ([UIScreen ff_screenSize].width == 414){
    bottom = 31;
    top = 88;
    left = 84;
    right = 33;

  }else if ([UIScreen ff_screenSize].width == 320){

    self.titleLabel.font = [UIFont systemFontOfSize:16];
    self.englishLabel.font = [UIFont systemFontOfSize:18];
    self.introduceLabel.font = [UIFont systemFontOfSize:13];
    self.introduceTop.constant = 8;
    top = 70;
    left = 44;
    bottom = 24;
    right = 28;

  }

  self.collectionButtonLeft.constant = right;

  self.chineseLabelTop.constant = top;
  self.introlduceLeft.constant = left;
  self.collectionButtonbottom.constant = bottom;

  [self.view setNeedsLayout];

记得修改约束后调用一下[self.view setNeedsLayout]; 这也是很关键的一点,不调用没有效果。

3.数字动画效果

在涉及到数字比较大的数据的时候可以采取这个效果来做,效果感人。
想实现这种效果也比较简单。

@property (weak, nonatomic) IBOutlet UICountingLabel *tuitionLabel;

 weakSelf.tuitionLabel.text = self.tuitionForAcademyModel.tuition;

NSInteger grade = [self.tuitionForAcademyModel.tuition integerValue];

weakSelf.tuitionLabel.format = @"%d%";

[weakSelf.tuitionLabel countFromZeroTo:grade];

最重要的一步是设置format,不然他会跑小数的。

4.label文字间距如何调整

- (void)configureContentLabelText
{
  NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc]initWithString:@"Label"];
  long number = 5;
  CFNumberRef num = CFNumberCreate(kCFAllocatorDefault,kCFNumberSInt8Type,&number);
  [attributedString addAttribute:(id)kCTKernAttributeName value:(__bridge id)num range:NSMakeRange(0,[attributedString length])];
  CFRelease(num);

  self.label.attributedText = attributedString;
}

效果如下,字的间距被拉开了

5 . 登录思路

a.用户进入app后,在使用app的过程中,进行需要登录的操作。

b.这时候调用的后台接口一般需要带上token参数。这时候因为用户没有登录,没有token,所以在这里进行判断本地是否持久化了token.

c.本地没有持久化token,所以自动弹出登录框,让用户进行登录

d.用户登录完毕后将相关数据,特别是token进行本地持久化

小细节:

a.每次启动app的时候可以将token 进行io操作读取出来,保存在单例里面,这样就不用重复的去进行耗费性能的io操作

b.因为项目中自定义控件必不可少,在控件级别的页面,需要使用到需要登录的操作,这时候就需要发送通知给对应的控制器来present login控制器,因为控制器级别才能弹出控制器,这样一来,会产生大量的通知操作,建议可以将login写在window上面(这里因为项目工期紧,发现这个问题的时候已经不好处理,希望后来的兄弟们切记)

c.需要token参数的接口,token参数错误,这时候需要后台给一个统一的回调,这样方便集中起来处理

6 . 账号互踢的思路

千万不要尝试在单个页面去处理。

思路如下:

1.需要在登录登出的发送通知到各个控制器,并在通知里面进行各个控制器的初始化操作。

2.在调用需要登录才能操作的接口的时候,后台进行判断给你一个token 参数失效的回调

3.作为一个合理的项目框架,总该有一个AFN的封装吧!在封装的AFN里面进行统一判断,如下图。(因为每个后台处理方式不一样,代码就上图吧,给你们代码也复用不了。)

4.这个通知发送到了UITabBarController,进行让用户重新登录处理

#import <UIKit/UIKit.h>

@interface WXMainController : UITabBarController

@end
#pragma mark -监听账号互踢,这时候先退出登录,然后回到首页
- (void)addNotification{

  WS(weakSelf);

  //  [[NSNotificationCenter defaultCenter] postNotificationName:KMutualKickNotification object:nil];
  [[NSNotificationCenter defaultCenter] addObserverForName:KMutualKickNotification object:nil queue:nil usingBlock:^(NSNotification * _Nonnull note) {

    [weakSelf alertWindow];

  }];

}

#pragma mark-弹出框选择界面
- (void)alertWindow{

  if (!self.isShow) {

    self.isShow = YES;

    UIAlertView *alter = [[UIAlertView alloc] initWithTitle:@"" message:@"您的账号已在其他设备登录,现在您已经处于退出登录状态" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil];

    [alter show];
  }

}

#pragma mark-弹出框选择界面的代理方法,点击确定就弹出登录框
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{

  if (buttonIndex == 0) {

    WXLoginController * loginController = [WXLoginController showLoginContoller:NO andIsShowColse:NO];

    [self presentViewController:loginController animated:YES completion:nil];

    self.isShow = NO;

  }

}

任何事情都有方法和技巧,单没有捷径,IOS开发也不例外,脚踏实地从实践中发现方法,熟练后就有技巧。希望本文能够帮助的学习IOS开发的大家。

(0)

相关推荐

  • 提高iOS开发的小技巧和思路小结 (二)

    前言 之前跟大家分享过一篇<提高iOS开发的小技巧和思路>,但是里面整理的不够全面,通过最近这段时间的整理学习,又整理了一些小技巧和思路分享给大家,下面话不多说了,来看看详细的介绍吧. 一.如何让你的app在后台持续运行一段时间 iOS的app在按下home键的时候,只有不到五秒钟的时间去处理保存或者是清楚资源的工作,这里提供一种办法.(这是在唐巧的书上面学习的) 产品经理的需求:如果app的本地持久化的额图片超过了100mb,需要去清除. 我之前的做法是在程序启动的时候去做这个事情,很显然效

  • iOS应用开发中UITableView的分割线的一些设置技巧

    对于ios7,ios8及以上来说,调整UITableView的cell的分割线位置已经是相当不便,因为UITableView内部使用了margin layout. 其实只需要如下这样子就可以实现分割线的控制. 复制代码 代码如下: -(void)tableView:(UITableView )tableView willDisplayCell:(UITableViewCell )cell forRowAtIndexPath:(NSIndexPath *)indexPath {     // 下面

  • iOS屏幕适配开发实用技巧

    一.旋转处理 第一步:注册通知 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(changeFrames:) name:UIDeviceOrientationDidChangeNotification object:nil]; 第二步:处理接收事件 -(void)changeFrames:(NSNotification *)notification{ NSLog(@"change notifica

  • iOS开发中简单实用的几个小技巧

    前言 本文记录了在iOS开发过程中所遇到的小知识点,以及一些技巧,下面话不多说,来看看详细的介绍. 技巧1:UIButton图片与文字默认是左右排列,如何实现右左排列? 解决技巧: button.transform = CGAffineTransformMakeScale(-1.0, 1.0); button.titleLabel.transform = CGAffineTransformMakeScale(-1.0, 1.0); button.imageView.transform = CGA

  • 分享一些iOS开发实用的小技巧

    1.设置navigationbar title颜色 UIColor *whiteColor = [UIColor whiteColor]; NSDictionary *dic = [NSDictionary dictionaryWithObject:whiteColor forKey:NSForegroundColorAttributeName]; [self.navigationController.navigationBar setTitleTextAttributes:dic]; 2.获取

  • iOS开发中使用UILabel设置字体的相关技巧小结

    一.初始化 复制代码 代码如下: UILabel *myLabel = [[UILabel alloc] initWithFrame:CGRectMake(40, 40, 120, 44)];      [self.view addSubview:myLabel]; 二.设置文字 1.设置默认文本 复制代码 代码如下: NSString *text = @"标签文本"; myLabel.text = text; 效果: 2.设置标签文本(此属性是iOS6.0之后才出现,如若不是必要,不

  • 针对iOS开发的一些Xcode使用技巧小结

    一.快捷键的使用 经常用到的快捷键如下: 新建 shift + cmd + n     新建项目 cmd + n             新建文件 视图 option + cmd + 回车 打开助理编辑器 cmd + 回车           显示主窗口 cmd + 0             导航窗口 option + cmd + 0    工具窗口 在.m & .h之间切换           control + cmd + 上/下 按照浏览文件的前后顺序切换     control + c

  • 提高iOS开发效率的小技巧与思路

    先用一张图展示学习iOS开发应该掌握的知识体系: 1.全图片作为背景的时候,可能遇到的问题.,滑回的时候,图片停留了一会才滑回去. 原因: 这种界面一般使用一般用imageView的第三种填充方式. 这种填充方式可以让图片不被压缩变形的前提下,尽可能去填充整个控件,但是设置这个枚举的填充方式的时候,记得按照下图这样设置,将超出控件范围的给切割掉 设置约束的时候,记得选择currentview的那个对象 2.设备适配的问题 还是上面这张图片,按照设计在6p上面来设置自动约束,约好后,在5s上面的时

  • 提高 Python 开发效率的3个小工具

    目录 在Sublime Text中支持Python运行 在Mac系统的iTerm2中支持查看图片 Python中的typing模块介绍 本文将介绍的三个小工具如下: 在Sublime Text中支持Python运行: 在Mac电脑的iTerm2中支持查看图片: Python的typing模块介绍. 详细内容介绍如下. 在Sublime Text中支持Python运行 在平时工作中,我们通常用PyCharm开发Python工程,也可以用Vim编辑和查看Python脚本.但是,如果我们仅仅想创造一个

  • 提高 Python 开发效率的3个小工具

    目录 在SublimeText中支持Python运行 在Mac系统的iTerm2中支持查看图片 Python中的typing模块介绍 本文将介绍的三个小工具如下: 在Sublime Text中支持Python运行: 在Mac电脑的iTerm2中支持查看图片: Python的typing模块介绍. 详细内容介绍如下. 在Sublime Text中支持Python运行 在平时工作中,我们通常用PyCharm开发Python工程,也可以用Vim编辑和查看Python脚本.但是,如果我们仅仅想创造一个单

  • SpringBoot和Swagger结合提高API开发效率

    现在Web开发越来越倾向于前后端分离,前端使用AngularJS,React,Vue等,部署在NodeJS上,后面采用SpringBoot发布Rest服务,前后端进行分离.这样的架构灵活且特别适合大型团队的协作开发. 那么问题来了,因为前端都是和后端通过API进行交互的,那么前后端的Rest API的接口如何进行定义和沟通呢?首先想到的应该就是Swagger. 那么什么是Swagger,Swagger™的目标是为REST APIs 定义一个标准的,与语言无关的接口,使人和计算机在看不到源码或者看

  • 使用WEB工具快速提高Android开发效率

    正所谓工欲善其事,必先利其器.学习并应用优秀的轮子,可以让我们跑的更快,走的更远.这里所指的工具是广义的,泛指能帮助我们开发的东西,或者能提高我们效率的东西,包括:开发工具,监测工具,第三方代码库等. 在Google的广大支持下,便捷开发Android程序的Native工具层出不穷.其实Android开发涉及到的范围也不小,一些Web工具有时候也会带来事半功倍的效果.有些甚至是一些native应用无法做到的.本文,将简单列举一下本人正在使用的一些工具,当然也会持续更新. 查找优秀的参考工程 co

  • kotlin开发cli工具小技巧详解

    目录 脚手架 开搞 开发调试 jcommander Main 函数声明 压缩模板 放飞自我 生成最终产物 结尾 脚手架 脚手架是为了保证各施工过程顺利进行而搭设的工作平台 而在程序开发过程中,每个工程或者说公司也都需要一个脚手架工具.通过脚手架命令行的形式简化开发流程,避免发生一些人为的相对低级的问题,所以这个也就是为什么叫做脚手架的原因吧. 而由于每个公司的代码规范都不同,一般情况下会主动让开发同学进行工程方面的cv操作,就是成本高并且容易出错.这也就是为什么我们打算写一些这样的工具的原因.

  • 提高php运行速度的一些小技巧分享

    1.代码优化 代码优化不仅仅是写出干净和清晰的代码,而是对代码进行一定的简化.可以使用Zend Optimizer来自动帮助完成这些繁杂的工作.Zend Optimizer可以从Zend Technologies的网站http://www.zend.com/免费得到,但必须同意它的许可约定,因为它不是以GPL方式发行的.它的原理很简单,即通过检测Zend引擎产生的中间代码,并对它进行优化,从而获得更高的执行速度. 在使用了Zend Optimizer后,复杂的PHP源程序的执行效率马上会得到显著

  • jQuery前端开发35个小技巧

    废话不说 直接代码,有问题可以一起交流 1. 禁止右键点击 $(document).ready(function(){ $(document).bind("contextmenu",function(e){ return false; }); }); 2. 隐藏搜索文本框文字 Hide when clicked in the search field, the value.(example can be found below in the comment fields) $(docu

随机推荐