Tag: 技巧

快速Swift技巧I

字典作为一线开关/盒 从技术上讲,您可以使用字典将switch case块重写为一行。 首先,创建一个字典,其中每个对都将大小写条件作为键,并将其对应的返回值作为值。 最后,由于字典在运行时可能有也可能没有键,因此我们使用nil合并运算符来处理默认情况。 例如,看看我们如何转换开关盒并返回带有其IndexPath的单元格高度: 自然,这种类型的重写将取决于您先前的逻辑有多复杂。 另外,请记住,并非总是单衬板是最佳选择。 您应该始终优先考虑代码的可读性。 但是,拥有另一种选择总是很好。 可变参数 可变参数是函数参数,其行为类似于常量数组,但在调用时以不同的方式表示。 代替使用数组符号,传递的元素用逗号分隔。 如果要使用这些参数构建自己的函数,只需声明参数的类型,后跟3个点。 例如,查看以下简单的UIView扩展以在单个调用中添加多个子视图: 在这里,我们可以根据需要传递尽可能多的参数。 但是,每个函数只能有一个可变参数。

使自定义UITableViewCells出队的更安全的选择

使用最新的API(在iOS 6中引入)使出站和自定义基本UITableViewCell ,您将执行以下操作: 这样做的主要原因是register与dequeueReusableCell方法之间的完全独立性: dequeueReusableCell不知道您之前是否注册了一个单元,并且无法推断其类型。 因此,它需要从UITableViewCell强制转换为自定义子类。 解决此问题的常用方法是: 还记得我们在iOS 6之前对单元出队的方式吗? 使用旧的dequeueReusableCell方法,并在该方法失败的情况下创建一个新的单元格。 我们没有在任何地方注册单元格类型。 使用此方法具有重要的优点: 使单元出队的所有必要代码都在同一位置:这正在改善您的本地推理。 您不需要使用任何解决方法:编译器不会引发任何错误,代码也不会崩溃,并且它不会无声地失败(当然,从技术上讲,它可以,但是前提是您分配了不同的单元格标识符。)继续阅读)。 由于所有代码都在一起,因此您可以将单元标识符设置为常数并重新使用它,从而避免了我们之前确定的可能的故障点之一。 由于现在开发人员是负责初始化单元的人(不再自动完成),因此编译器确保强制类型转换和新创建的单元属于同一类型。 这样可以避免我们谈论的另一个故障点:不可能有不同的类型(编译器会引发错误)。

使用扩展功能的iOS开发改进/技巧

我列出了一些小改进/窍门,可以在您的开发周期中为您提供帮助。 请随意提出您的方式,我很乐意将它们添加到此列表中。 用前缀名称的捆绑名称命名您的通知。 它始终可以帮助您避免以后出现任何名称冲突: 枚举通知{ 静态让NotificationOne =“ com.myapp”。 +“ NotificationOne” 静态让NotificationTwo =“ com.myapp”。 +“ NotificationTwo” 静态让NotificationThree =“ com.myapp”。 +“ NotificationThree” 静态让NotificationFour =“ com.myapp”。 +“通知四” } 在UIViewController和UIStoryboard扩展中添加方法以轻松访问和启动VC: 不要忘记在Storyboards的视图控制器中添加标识符。 扩展UIViewController { 静态函数onboardingVC()-> OnboardingVC { 让标识符=字符串(描述:OnboardingVC.self) 返回UIStoryboard.onboarding()。instantiateViewController( withIdentifier:标识符)为! 入门VC } }扩展UIStoryboard { 静态功能onboarding()-> UIStoryboard { 返回UIStoryboard(名称:“ Onboarding”,包:无) } } let onboardingController = UIViewController.onboardingVC() 添加方法以在两种颜色之间进行动画处理时计算中间颜色。 用例:如果用户将手指张开,并且您想根据其跨度位置为颜色设置动画。 (可以在该库中找到toRGBAComponents()和toHSLAComponents()方法,您可以编写自己的方法) 扩展UIColor { […]

Xcode技巧与窍门(高效)

我们总是急于至少按时完成工作。 为此,我们所有人都在使用某种技巧。 如果您不这样做,那就开始吧, Be product 。 使用的符号:- ⌘=命令键 ⌃ =控制键 ⌥=选项(alt)键 ⇧= Shift键 ↩=返回键 故事板重构 将大型用户界面分成多个情节提要板的好处是可以避免源代码控制冲突。 缺点是您随后无法在Interface Story Builder中的不同Storyboard之间创建脚本。 脚步:- 选择要重构的场景。 从Editor菜单中选择“ Refactor to Storyboard然后在出现提示时输入新的情节提要的名称并保存。 界面生成器将切换为显示给您新创建的情节提要,其中应包含先前选择的场景和场景。 如果切换回主故事板,您将看到“设置”场景已替换为代表故事板参考的占位符。 查看层次结构 使用Control + Shift +单击视图来显示视图层次结构。 锁定UI元素以防止其他更改 如果要防止在开发模块中进行更改,则可以锁定元素或ViewController,以使您的共同开发人员无法更改ViewController的该视图的属性。 当然,他可以解锁该属性并对其进行更改。 脚步:- 选择要锁定的View / ViewController。 打开身份检查器 。 在“文档”部分中打开lock属性的下拉列表。 选择合适的选项。 现在,如果您更改视图的位置,您将在屏幕上看到一个锁定图标。 插座系列 插座集合是IBOutlet的数组。 我们可以在一个集合中存储不止一种相同类型的IBOutlet,以便稍后可以使用它一次应用相同类型的属性。 我们也可以像普通数组一样使用索引访问特定的出口。 脚步:- 在情节提要中选择ViewController。 使用⌥+⌘+↩打开Assistance Editor。 ⌃ +拖动插座。 将“连接”更改为“ […]