本人iOS菜鸟一名,在使用iOS开发工具XCode过程遇到的问题在此进行记录。
安装CocoaPods
[**threshold@ThresholddeMacBook-Air**:**~**$] sudo gem install cocoapods
Password:
Fetching: i18n-0.7.0.gem (100%)
Successfully installed i18n-0.7.0
Fetching: thread_safe-0.3.5.gem (100%)
Successfully installed thread_safe-0.3.5
Fetching: tzinfo-1.2.2.gem (100%)
Successfully installed tzinfo-1.2.2
Fetching: minitest-5.9.0.gem (100%)
Successfully installed minitest-5.9.0
Fetching: concurrent-ruby-1.0.2.gem (100%)
Successfully installed concurrent-ruby-1.0.2
Fetching: activesupport-5.0.0.1.gem (100%)
ERROR: Error installing cocoapods:
activesupport requires Ruby version >= 2.2.2.
安装cocoapods报错。
sudo gem install activesupport -v 4.2.6
再安装cocoapods就OK了.
- 使用Cocoapods
在项目文件夹下新建个文件:Podfile
在文件中写
pod 'AVOSCloud'
然后关闭XCode.
打开终端。cd到这个目录。
输入
pod install
等待安装。
Paste_Image.pngok 啦,以后打开项目就打开 .xcworkspace文件即可
1. 预览StoryBoard
Paste_Image.pngShift Optional 单击 会弹出如下的预览位置选择框
Paste_Image.png选择一个位置即可进行预览StoryBoard
Paste_Image.png+ 号可以添加不同的设备。选中一个设备,按Delete键删除设备
2. 快捷键
-
Ctrl 0
关闭显示导航窗口 -
Ctrl 拖拽
StoryBoard View 相当于鼠标右键拖拽View常用来关联View到代码中或者设置View的Constraints(约束)
-
Command =
让StoryBoard上的View大小自适应文字 -
Shift 右击
或Shift Ctrl + 单击
在StoryBoard上可以选择要选中的View对象。
就像下面这样:
Paste_Image.png
3. 屏幕约束
横向是宽度,纵向是高度。
常规 | 紧凑 | |
---|---|---|
常规 | iPad | iPhone竖屏 |
紧凑 | iPhone6sPlus横屏 | iPhone 4/5/6 横屏 |
常规:长度够了 紧凑:长度不太够用
为什么6sPlus 横屏例外呢,因为6s屏幕很大,横起来的时候原来的高度就用做横向长度,这相当于iPad的宽或高(可粗略认为iPad宽高相同),所以属于常规
4. 杂项
- Align 对齐
-
Pin 固定
Pin.png
constraint to margins
勾选上是设置到margin的距离,如果是要充满屏幕,一般去掉这个勾,四个方向填0,然后Add Constraints
aspect ration 是否自适应缩放
- 删除Swift文件,要Move to trash,而不是移除引用.
- 本土化应用
Info.png例如UITableView Cell中滑动删除按钮默认是英文的
- UIColor RGB颜色设置值时要记得除以255
shareRowAction.backgroundColor = UIColor(red: 0/255, green: 171/255, blue: 97/255, alpha: 1)
-
转场
- Push deprecated 压栈 带返回按钮
- Modal deprecated 模态 必须完成这个才能结束
-
嵌入导航控制器
- 菜单栏简单点击法:
Editor -> Embed in -> Navigation Controller
Paste_Image.png
嵌入导航控制器后的效果:
- 菜单栏简单点击法:
-
Segue
- Show 目的视图会被压入导航栈顶部。导航条会提供一个后退按钮,用以返回源视图。这是最常用的方式
- Show detail:与show类似,但会替换源视图。将没有导航条和后退按钮
- Present Modally: 模态显示内容。目的视图会从底部向上弹出。通常用于显示跟页面连贯性不强的视图。比如登录(无论在哪个页面,都可能调出此功能)
- Present as popover:iPad中常用,模态显示一个带箭头指向圆角矩形的弹窗,类似一个弹出菜单。就像漫画书中两个人对话中的对话框
-
转场 Segue 传递数据
Paste_Image.png在可视化的过渡发生前,源控制器会得到通知,触发 prepareForSegue()方法
可在prepareForSegue方法中传递相关数据给目的地控制器
首先需要给转场 Segue 加一个标识符(Identifier)
方法:选中转场,属性栏 identifier
在源控制器中写:
// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
// Get the new view controller using segue.destinationViewController.
// Pass the selected object to the new view controller.
if segue.identifier == "showRestaurantDetail"{
let destVC = segue.destinationViewController as! RestaurantDetailViewController
destVC.restaurantName = restaurants[(tableView.indexPathForSelectedRow?.row)!]
destVC.restaurantImage = restaurantPictures[(tableView.indexPathForSelectedRow?.row)!]
}
}
Paste_Image.png
- UIImageView 的 Mode
- Scale to Fill (拉伸 - 默认)
图片适应容器尺寸,图片可以背完整显示,但是可能会被拉伸而改变比例
- Aspect Fit (居中)
图片保持比例不变,可以完整显示并居于容器中间
- Aspect Fill (平铺)
Paste_Image.png图片原始尺寸不变,如果超出容器尺寸,会被截断一部分。
注意平铺模式,多余的部分会覆盖周围视图一部分,所以要先择裁边属性。Clip SubViews
- iOS适配动态字体
iOS在系统设置-辅助功能可以设置字体大小。但是App需要对此进行适配
适配方法就是在控件的字体上选择一种文字样式。
Paste_Image.png比如选择“Headline”
- 无法在View上拖入新View
Paste_Image.png例如想在UIImageView上拖入UIButton,但是拖不上去。
这个时候需要拖一个View(就是View,不是UIButton等其他控件)到原来控件位置,其他控件都拖到这个新View上面即可。
- 在Modal窗口返回上一个界面 ( UnWind Segue )
从Button拖到另一个ViewController 选择Modally就是模态显示新窗口(无返回键)
先在上一个Cotroller编写个方法(参数必须为UIStoryboardSegue),然后按照下面方式拖点击事件即可关闭窗口。
@IBAction func closeSegue(segue:UIStoryboardSegue){
//返回时的操作,可以为空
}
Paste_Image.png
- 启用组件
Paste_Image.png例如启用地图组件(MapKit)
嗯 ,就是这么简单,打开地图开关就能让App拥有地图相关功能
-
CoreData
- 生成CoreData实体类
- PageView 翻页视图
transition style 翻页样式。
Scroll 滑动
Page Curl 翻书样式
-
TabBar
TabBar 转场后不显示TabBar
勾上 Hide Bottom Bar on Push
Paste_Image.png
如果要在代码中设置,就在转场前设置目的视图的BottomBar为hide
- 重构StoryBoard(引用Storyboard)
网友评论