项目搭建第一步:
工程名称,公司名称,公司标识(com.baidu),生成唯一标识符,
抽开iPhone和iPad.
3个都是单元测试,国内不不选择,国外比较普遍。
A-General
Bundle Identifier:项目的唯一标识必须写,作用:1.上传APP到APPSTORE,2.做推送的时候。
原理:根据唯一标识符推送内容到手机和应用。
Version:1.0.迭代:1.1
Build:编译版本,没有用
Team:做真机调试的。拿好设备。带回家。
Deployment Target: 支持哪个版本以上。iphone的iOS系统的版本,表示应用只支持9.0以上。
选择8.0以上。或者7.0以上。
如果6.0以上,就不要做了,6.0的应用活不了多久了。大部分都已经升级了。
而且6.0很麻烦。
Main Interface: Main,从storyBoard加载
Status Bar Style :程序启动的状态栏,程序启动结束就没有用了。
Default黑色的状态栏
Light白色的状态栏。
一般开发中都给它隐藏。为了看全屏,就给它隐藏。
如果动画很快,你想看。就调 Debug ShowAnimation:动画就可以很慢很慢
Embedded Binaries .a
Linked Frameworks and Libraries frameworks
静态库。第三方库
打包成静态库,就看不到文件内容了。只能看到.h。看不到源码。
APP的名字:Info.plist. Bundle name中文名字。就是APP command+shift+H显示的名字
项目的名字的名称:带有中文的名字不行的。。。解码有乱码。
AppIcon Icon项目图标:直接全选,拖进去就可以。
AppIcon Icon启动图片:
AppIcon Icons and Launch Images
App Icons Source :AppIcon Icon项目图标:直接全选,拖进去就可以。
Launch Images Source:点击use Asset Catalog。多个箭头,显示的Brand Assets箭头,直接全选,拖进去就可以。
因为
Launch Screen File :LaunchScreeen优先级比Launch Images的高。
所以两个都设置的时候,就走的是Launch Screen 。
如果你要走launch Images就把Launch Screen删掉。
如果xcode设置了不起作用。原因:1. Xcode缓存的问题,command+shift+K. 2.可能是因为安装了,都已经设置了。删除程序。重新运行。就可以了。
如果通过LaunchImage设置启动界面,那么屏幕的可视范围由图片决定。
没有图片5的话,上面有个条,下面有个条。尺寸编程320和480
注意点:如果你使用了LaunchImage,你必须让美工提供各种尺寸的图片。
LaunchScreen:Xcode6开始才有
好处:自动识别当前真机和模拟器的尺寸。
比如说LaunchScreen Use Asset Catalog
LauchScreenstoryboard.拖个ImageView
距离边界0,设置个图片。让美工提供一个可以拉伸的图片。
好处:可以展示任何东西。
推荐用LauchScreen.
底层实现:把LaunchScreen截屏。生成一张图片。
如何把LaunchScreen还原回到LaunchImage.
把LaunchScreen删掉。然后,把LaunchImage生成一个新的。把老的LaunchImage和LaunchScreen删掉就可以了
**********************************
项目架构,结构搭建
UI层
数据层
请求层
程序启动原理
Main——uiapplicationMain: 1
1.创建uiapplication。打开网页,发短信。打电话。.设置应用程序的提醒数字。.设置联网状态。设置状态栏。
2.创建appdelegate代理对象。监听整个app生命周期。处理内存警告。
3.开启主运行循环。保证程序一直运行。runloop:主线程有个runloop自动开启。每一个线程都有runloop
4.加载info.plist.判断是否指定了main.storyboard.如果指定了,就会去加载main.storyboard.加载会做几件事情。创建窗口。设置窗口跟控制器。显示窗口。
5.程序启动的时候调用didFinishLaunchingWithOptions:
Class-A-M,V,C
复制A。
tabbarcontroller会把第0个控制器的view添加进去。
设置tabbar按钮的内容 由对应子控制器的tabBarItem的属性决定。
设置navigation的内容,由栈顶控制器决定。
tabbarItem的子控制器是导航控制器。nav,nav1,publishVc,nav3,nav4
设置tabBar上按钮内容:由对应的子控制器的tabBarItem属性
0:nav.tabBarItem.title = @“精华”;
nav.tabBarItem.imge =[uiimage imageName:@“”];
nav.tabBarItem.selectedImage =[uiimge imageName:@“”];
选中图片被渲染:默认iOS7以后默认tabbar上的图片都会被渲染。 倒三角=Rander As. 点击图片文件夹。全选择图片。然后点击倒三角===Rander As
Orange. Image一起设置
[Image imgeWithRenderingMode:UIImageRenderingModeAlways]
返回一个没有渲染的图片
抽出来一个uiimage的分类。快速创建一个没有渲染的图片。
Category
为了提示image的Name 改插件。如何去查找插件。插件有个地方指定安装到什么地方。
打开插件。搜索plug.Plug插件的意思。
插件安装什么地方。一般做xcode的配置。找有没有做配置。install path
Build Settings Installation Directory. /Library
桌面-option-前往资源库
LolcalLized本地化翻译。如果没有本地化。就copy这个文件。
就会变成中文。资源库就是Library.
资源库-D-Xcode-Plugins-显示包内容-resource-Completions.plist
plist编辑状态:plist保存才行。编译一下
选中标题颜色:应该是黑色的
选中标题的字体非常大。
发布按钮显示不出来
封装:谁的事情谁管理,方便以后去维护代码
自定义类:管理自己的业务
/********************************************************************************************************/
项目搭建第二部
********************关于tabbar的自定义*******************
调整按钮的位置,在layoutsubview里面调整。
控件的center不能等于self.center.要用self.bounds.size.width和self.bounds.size.height
在layoutSubviews里面修改布局。这个方法的调用频率比较高。
添加一次就想到懒加载,懒加载在里面一定要写self addsubview,加到上面,就会有个强引用。不能会没有。
按钮设置背景图片setBackgroundImage。
按钮的尺寸没有,可以button sizeToFit. 会根据按钮的图片或者文字的内容自适应,就不用设置尺寸了。
iskindOfClass
NSClassFromString(@“”)反编译
tabBar有个item这个属性,记录有多少个按钮
tabBar.item.count
/******************************************************************************************************/
常见的xib连线的问题:
1.如果不是和vc.h.m一起create的xib,写init的时候,通常会报错。因为会调用initWithNibName方法会判断,有没有指定nibName,然后判断有没有跟我的类名同名的xib。解决办法是,file owner指定控制器,flie owner的view连线到xib的view
/**************************************************************************************/
屏幕高度,6p:736, 6:568, 5:568, 4:480
/***************************************************************************************/
CocoaPods 使用:
1.插件使用位置,product - CocoaPods - Create/Edit Podfile
2.命令行
(1)cd 工程文件----- cd 文件夹----touch podfile ------打开open podfile------搜索需要导入的框架的描述 pod search,复制到podflid里面,然后安装第三方框架
pod install - help
pod - help
查到命令no-repo-update
pod install --no-repo-update:跳过第三方仓库的更新索引,一个月pod repo的一次就可以了。
pod install:安装的依赖的第三方,根据podfile.lock安装。第一次会根据podfile文件加载。
(podfile.lock第一次pod的时候就会自动生成文件。用来描述当前导入框架的版本号)
pod update:查看导入的框架有没有新的版本,如果有新的版本就会去加载,并且更新pod.lock。
pod repo:管理第三方仓库的索引,去寻找框架有没有最新的版本,有就记录。
以后只能去用xcworkspace 去打开。
/***************************************************************************************/
调用接口的时候,响应头的原因:content-type.
/**************************************控制器,View*************************************************/
控制器,View
一、
1.1 xib必须要重新设置控件的frame.
1.2。ViewDidLayoutSubViews{
[super …]
因为会调用多次,所以不能创建控件
因为会根据布局创建frame,所以必须在这里设置frame,在viewDidLoad里面是没有效果的。
设置frame
}
1.3 viewDidLoad{
[super ….];
创建控件
}
二、变更view的时候,一定要调用这个方法layoutIfNeeded
[UIView animateWithDuration:0.3 animations:^{
[self.view layoutIfNeeded];
}];
三、resizableImageWithCapInSets:
Image …… 拉伸处理,说明图片要保护的区域
四:改变约束的是constant这个属性。
/**************************************控制器,View*************************************************/