最近在仿写一款app 也是第一次写这种企业级的app,所以想从开始 遇到的一些问题和用到的一些东西,以供那些像我这样的小白学习一下(不喜勿喷啊,奴家只是一个小白而已,或许遇到的问题有可能是初级的问题,所以不喜勿喷,
1.在刚开始的时候先把用到的第三库想列出来,加以说明,期间比较陌生的第三方库也是靠百度的
1)AFNetworking 这个开发全部都知道吧 一个很好用的 网络请求的第三方库
2) CDDpagerController 父子控制器切换界面的功能
3) FMDB 封装的数据库
在 FMDB 中有三个重要的类:
FMDatabase:是一个提供 SQLite 数据库的类,用于执行 SQL 语句。
FMResultSet:用在 FMDatabase 中执行查询的结果的类。
FMDatabaseQueue:在多线程下查询和更新数据库用到的类。
4)IQKeyboardManager OS中专门管理UITextField/UITextView控件被遮挡的第三方库工具,并且简单易用
github连接https://github.com/hackiftekhar/IQKeyboardManager
5) Masonry 非常简洁优美的一款Autolayout框架
6) MJExtension 是一套“字典和模型之间互相转换”的轻量级框架
7) MJRefresh 功能强大的iOS下拉刷新(也支持上拉加载更多)控件
8) SDCycleScrollView 简单好用的 无限循环工具。 超简单使用 部分自定义 获取网络图片 图片对应的标题 代理
9) SDWebImage 可谓是占据大半壁江山。它支持从网络中下载且缓存图片,并设置图片到对应的UIImageView控件或者UIButton控件
10) SVProgressHUD 是一个第三方的控件,是一个弹出提示层
11) TZImagePickerController 一个访问照片 相册的 第三库
12)ZYCornerRadius直接对图片处理圆角,而不是View使用还是很简单的
2.第三库目前就用到了这么多,下面说一下我从第一步写 到最后 遇到的一些问题和一些陌生的代码
1)new 跟 alloc 的 区别
在项目中 总有写 new 有的时候 写alloc 那他们的区别是什么呢
new和alloc/init在功能上几乎是一致的,分配内存并完成初始化。差别在于,采用new的 方式只能采用默认的init方法完成初始化,采用alloc的方式可以用其他定制的初始化方法。
2)pch 文件 .h文件不显示问题,在prefix header 导入路径就好
3)#import 跟@class 和include的区别
import会包含引用类的所有信息(内容),包括引用类的变量和方法
@class仅仅是告诉编译器有这么一个类, 具体这个类里有什么信息, 完全不知
效率上的区别
include 在C语言中,我们使用#include来引入头文件。使用#include “xx.h”来引入自定义的头文件,使用#include来引入库中的头文件。
4)UICollectionReusableView 不知道 你们用没用过,过着知道他的写法不 直接看代码 就懂了
// 注册头部 [self.collectionView registerClass:[UICollectionReusableView class] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:HeaderID];
// 如果有class来注册这个头部或尾部视图时一定要用代码的方式去设置下这个头部或尾部的尺寸 // 加载的时候会根据字符串来判断是头还是尾 self.flowLayout.headerReferenceSize = CGSizeMake(50, 50);
// 注册尾部 [self.collectionView registerClass:[UICollectionReusableView class] forSupplementaryViewOfKind:UICollectionElementKindSectionFooter withReuseIdentifier:FooterID];
self.flowLayout.footerReferenceSize = CGSizeMake(50, 50);
5)UIKIT_EXTERN
UIKIT_EXTERN简单来说,就是将函数修饰为兼容以往C编译方式的、具有extern属性(文件外可见性)、public修饰的方法或变量库外仍可见的属性
6)automaticallyAdjustsScrollViewInsets
从当前界面跳转到下一个界面的时候,导航栏多出来一个或者tabbar隐藏不了等问题的,大部分情况都是automaticallyAdjustsScrollViewInsets状态是YES造成的,那么这时候果断在viewDidLoad这个方法里面加一句:self.automaticallyAdjustsScrollViewInsets = NO; 不让它自动留出空白,由开发者自己去控制留白及坐标问题。
7) appearance
在iOS属性后有UI_APPEARANCE_SELECTOR标志都可以一次性统一设置.这种情况还有很多.比如说统一设置UITabbarItem的文字颜色
就是你有一个全局的UI nav 都是 一样的 可以这样设置
8)NSFontAttributeName NSForgroundColorAttrbuteName
① 设置字体属性,默认值 字体 字号
② 设置字体颜色 取值 UIcolor 默认黑色
具体可以看这篇文章 http://blog.csdn.net/lwjok2007/article/details/47184911
9)tabbar 点击动画 (不好意思 不知道怎么制作gif 图片 就直接粘贴 代码吧 希望能看懂)
#pragma mark - 点击动画
- (void)tabBarButtonClick:(UIControl *)tabBarButton
{
for (UIView *imageView in tabBarButton.subviews) {
if ([imageView isKindOfClass:NSClassFromString(@"UITabBarSwappableImageView")]) {
//需要实现的帧动画,这里根据自己需求改动
CAKeyframeAnimation *animation = [CAKeyframeAnimation animation];
animation.keyPath = @"transform.scale";
animation.values = @[@1.0,@1.1,@0.9,@1.0];
animation.duration = 0.3;
animation.calculationMode = kCAAnimationCubic;
//添加动画
[imageView.layer addAnimation:animation forKey:nil];
}
}
}
嗯 今天先这样吧 以后 会隔几天都会去更新 自己在仿写过程中 遇到的问题及新学洗的知识
在这里非常感谢 源码作者 对我的肯定 回头把 作者的 链接 附上
如果大家有什么不懂得 都可以跟我留言,如果感觉对你们有帮助 那就动动你们的小鼠标 赞一下 谢谢