[Android开发学iOS系列] 工具篇: Xcode使用和快捷键
[Android开发学iOS系列] 工具篇: Xcode使用和快捷键
工欲善其事必先利其器.
编辑
- Cmd + N: 新建文件
- Option + Cmd + N: 新建文件夹
- Cmd + / : 注释
- Ctrl + I: format indentation, (但是使用这个快捷键要小心, 可能会在你的空行里加入不必要的首行缩进, 所以没事不要全选再format.)
- Ctrl + Cmd + Space → Emoji
- Opt + Cmd + , : 分割当前编辑窗口
- Cmd + Shift + J: 显示当前文件在navigator窗口中的位置
- Cmd + Opt + 左/右: 折叠/展开
菜单窗口
- Ctrl + Click: 相当于右键, 或者mac trackpad上的两指点击. 会弹出菜单
- Cmd + Click: 会弹出一个快捷action菜单
- Cmd + ,: 打开preferences界面
- Cmd + Shift + 0: 打开documentation
- Cmd + 0: 隐藏/显示左边的navigator窗口
- Ctrl + Cmd + Shift + A: 看git提交历史
文件导航
- Shift + Cmd + O: 按文件名查找
- Ctrl + Cmd + J: 跳转到定义. 效果同: Ctrl + Cmd + Click
- Ctrl + Cmd + 左右方向键: 在最近打开的几个文件间切换
- Ctrl + 5: recent files
运行
- Cmd + B: Build
- Cmd + R: Run
- Cmd + U: Run Tests
- Cmd + Shift + K: clean build folder
Simulator
- Cmd + S: 截屏
- Cmd + K: show/hide soft keyboard
- Cmd + L: 锁屏
Debug
- 在debug的时候看变量的值:
po xxx, 其中xxx是你想看的变量名 - 在debug的时候可以看debug view hierarchy, 可以拖拽旋转显示层级, 左边会有树形结构
- 打开/关闭debug区域: Shift + Cmd + Y
- 把光标移到console: Shift + Cmd + C
- clear console: Cmd + K
- 看device log: Window → Devices and Simulators
Storyboard
- Ctrl + Drag: 设置上下的constraint; 添加outlet/action
- Cmd + Shift + L: 显示添加控件的object library
- Cmd + Alt + Enter: Show Assistant Editor
- 加Navigation Controller: Editor → Embed in → Navigation Controller
- 让storyboard显示情况符合constrains: Editor → Resolve Auto Layout Issues → Update Frames
Xcode不是很方便的几个地方
以下是几个觉得不是很方便的地方, 也不知道有没有更好的解决方案.
- 没有一个很好的看提交历史和diff的功能. 解决办法: 在github上看, 或者利用其它软件.
- 全文搜索没有快捷键, 只能点左上角的放大镜按钮.
- 重命名没有快捷键. 右键(或者是Ctrl + Click) → Refactor → Rename. 如果是局部变量可以Cmd + Click, 弹出的菜单里有重命名.
- 提取方法没有快捷键. 右键(或者是Ctrl + Click) → Refactor → Extract Method.
- 看调用栈没有快捷键. 右键(或者是Ctrl + Click) → Find → Find Call Hierarchy.
- 自动加import: 对于找不到类的报错, 在Android中可以Alt + Enter, 自动添加import, iOS不行, 只能自己复制粘贴import语句.
- 如何复制一个文件?
- 如何移动某一行?
- 还有一个我最不理解Xcode的地方, 就是没有自动import的功能. (如果IDE报错一个类找不到, 在Android Studio中可以通过Alt+Enter来自动import, 有时候有多个, 那么可以选择一下.) 但是Xcode只报错找不到, 然后没有任何方法自动添加和提示, 似乎记住这些类来自那个包是开发者的责任, 然后你需要手动添加.
Bonus: 从命令行打开项目
其他ide都有用命令行打开项目的功能, cd到项目目录然后:
- Android Studio:
studio .(需要Tools -> Create Command-line Launcher..) - IntelliJ:
idea . - Visual Studio Code:
code .(首先cmd + shift + p -> installcodecommand in PATH).
为了可以用同样的形式xcode .打开项目文件, 我们可以在.zshrc文件中添加一个alias:
alias xcode='open -a Xcode'
具体取决于你的Xcode在applications中叫什么名字, 比如我的:
alias xcode='open -a "Xcode 13.2.1.app"'
References
- https://medium.com/mobile-app-development-publication/xcode-android-studio-shortcut-cheatsheet-609d16ec4ba1
- Shortcuts: https://swifteducation.github.io/assets/pdfs/XcodeKeyboardShortcuts.pdf
[Android开发学iOS系列] 工具篇: Xcode使用和快捷键的更多相关文章
- [Android开发学iOS系列] 语言篇: Swift vs Kotlin
Swift vs Kotlin 这篇文章是想着帮助Android开发快速学习Swift编程语言用的. (因为这个文章的作者立场就是这样.) 我不想写一个非常长, 非常详尽的文章, 只是想写一个快速的版 ...
- [Android开发学iOS系列] Auto Layout
[Android开发学iOS系列] Auto Layout 内容: 介绍什么是Auto Layout. 基本使用方法 在代码中写约束的方法 Auto Layout的原理 尺寸和优先级 Auto Lay ...
- [Android开发学iOS系列] iOS写UI的几种方式
[Android开发学iOS系列] iOS写UI的几种方式 作为一个现代化的平台, iOS的发展也经历了好几个时代. 本文讲讲iOS写UI的几种主要方式和各自的特点. iOS写UI的方式 在iOS中写 ...
- [Android开发学iOS系列] 快速上手UIKit
快速上手iOS UIKit UIKit是苹果官方的framework, 其中包含了各种UI组件, window和view, 事件处理, 交互, 动画, 资源管理等基础设施支持. 按照前面的介绍, 用U ...
- [Android开发学iOS系列] ViewController
iOS ViewController 写UIKit的代码, ViewController是离不开的. 本文试图讲讲它的基本知识, 不是很深入且有点杂乱, 供初级选手和跨技术栈同学参考. What is ...
- iOS系列 基础篇 07 Action动作和输出口
iOS系列 基础篇 07 Action动作和输出口 目录: 1. 前言及案例说明 2. 什么是动作? 3. 什么是输出口? 4. 实战 5. 结尾 1. 前言及案例说明 上篇内容我们学习了标签和按钮 ...
- Android开发—智能家居系列】(二):用手机对WIFI模块进行配置
在实际开发中,我开发的这款APP是用来连接温控器,并对温控器进行控制的.有图为证,哈哈. 上一篇文章[Android开发—智能家居系列](一):智能家居原理的文末总结中写到: 手机APP控制智能温控器 ...
- iOS系列 基础篇 05 视图鼻祖 - UIView
iOS系列 基础篇 05 视图鼻祖 - UIView 目录: UIView“家族” 应用界面的构建层次 视图分类 最后 在Cocoa和Cocoa Touch框架中,“根”类时NSObject类.同样, ...
- iOS系列 基础篇 06 标签和按钮 (Label & Button)
iOS系列 基础篇 06 标签和按钮 (Label & Button) 目录: 标签控件 按钮控件 小结 标签和按钮是两个常用的控件,下面咱们逐一学习. 1. 标签控件 使用Single Vi ...
随机推荐
- .NET C#基础(4):属性 - 本质是方法
0. 文章目的 本文面向有一定.NET C#基础知识的学习者,介绍C#中属性的属性.定义.使用方法以及特殊性. 1. 阅读基础 理解C#基本语法(定义类及类成员,调用方法) 认可OOP的封 ...
- java通过socket实现https get 请求网页
1. 首先要初始化ssl context SSLContext context = SSLContext.getDefault(); socket = (SSLSocket) context.getS ...
- 深度学习与CV教程(14) | 图像分割 (FCN,SegNet,U-Net,PSPNet,DeepLab,RefineNet)
作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/37 本文地址:http://www.showmeai.tech/article-det ...
- 开源流程引擎Camunda BPM如何扩展数据库表
前言 在使用开源流程引擎(如:JBPM.Activiti.Flowable.Camunda等)的时候,经常会遇到这样的需求,我们需要按照业务需求增加一张数据库的表,而且这张表是跟工作流引擎有交互的(注 ...
- NLog自定义Target之MQTT
NLog是.Net中最流行的日志记录开源项目(之一),它灵活.免费.开源 官方支持文件.网络(Tcp.Udp).数据库.控制台等输出 社区支持Elastic.Seq等日志平台输出 实时日志需求 在工业 ...
- 用WindowsAppSDK(WASDK)优雅的开发上位机应用
C#开发上位机应用的一些选择 如果你不想看介绍,可以直接跳到优雅开发示例那里. 1. WASDK(WinUI 3) Windows 应用 SDK 是一组新的开发人员组件和工具,它们代表着 Window ...
- MySql中数据表增加字段很慢怎么办
正确的做法是这样,对于数据量很大的表,需要添加所有或者修改字段的做法是如下: 1.先创建一张一样的表 create table new_tb like tb_old; 2.修改创建表的字段 alter ...
- NC20565 [SCOI2009]生日礼物
NC20565 [SCOI2009]生日礼物 题目 题目描述 小西有一条很长的彩带,彩带上挂着各式各样的彩珠.已知彩珠有 \(N\) 个,分为 \(K\) 种.简单的说,可以将彩带考虑为 \(x\) ...
- jdbc 05: 查询结果集
jdbc连接mysql,查询结果集 package com.examples.jdbc.o5_结果集查询; import java.sql.*; import java.util.ResourceBu ...
- 使用OpenCv+Arduino实现挂机自动打怪
使用OpenCv+Arduino实现挂机自动打怪 最近在玩某网游,练级十分枯燥和缓慢,就是挂机刷刷刷,所以研究一下自动化,找了个可以原地挂机刷怪的职业,然后用OpenCv检测技能冷却,冷却好了通过串口 ...