代码编织梦想

分析Swift性能高效的原因-爱代码爱编程

绝大多数公司选择Swift语言开发iOS应用,主要原因是因为Swift相比Objc有更快的运行效率,更加安全的类型检测,更多现代语言的特性提升开发效率;这一系列的优点使Swift语言的热度越来越高。 自从2014年Apple发布Swift语言以来,历时六年多,Swift已经发布到5.3版本,在5.0版本已经ABI stability,5.2版本

Swift版ViewPager之Tabman 简单使用-爱代码爱编程

前言: Android上的ViewPager/ViewPager2为同级多页面切换带来了很好的体验。iOS系统中并没有提供类似的原生控件,如果要使用UIPagerViewController等进行自定义封装对于初学者而言难度则过高。这里uias提供了开源组件Tabman,其具有易理解、上手快等优点。鉴于网络上并没有几篇文章关于该组件的(也有寥寥几篇,质量

iOS 边学边记 UIView 的 setNeedsDisplay 和 setNeedsLayout 的区别-爱代码爱编程

(1) 在 Mac OS 中 NSWindow 的父类是 NSResponder,而在 iOS 中 UIWindow 的父类是 UIVIew。程序一般只有一个窗口但是会有很多视图。 (2) UIView 的作用:负责对其所属的矩形区域描画、布局和子视图管理、事件处理、可以接收触摸事件、事件信息的载体、等等。 (3) UIViewController:负

关于自动布局scrollview 并使其滚动(snapkit)-爱代码爱编程

关于自动布局scrollview 并使其滚动(snapkit) scrollView = UIScrollView.init() view.addSubview(scrollView!) scrollView?.snp.makeConstraints({ (make) in make.edges.equalToSuperv

Swift之单例模式-爱代码爱编程

前言: 单例特点: 单例实例在整个应用程序生命周期期间必须只有一个,例如UIApplication或NSNotification;单例的构造器必须为private;单例实例必须为线程安全的。单例优点: 调用单例实例时避免了不必要的开销;简化管理和使用流程。代码: class CaculateRectangleArea{ static let

硬杠到底:二本渣渣的辛酸面试之路,从外包到知名大厂,4年小iOS开发的心路历程-爱代码爱编程

笔者16年于广东一个普通二本,毕业后去了满地都是机会的深圳。第一份工作是一家外包公司,主要业务是电商和电子支付信息安全方面的。至今已工作4年。大家都知道,对于跟我一样没有名校背景,也没有大厂出身的程序员来说,面试唯一的加分项就只有某一方面的技术深度了。所以我也建议各位小伙伴也跟我一样,选择一个自己感兴趣的,或者比较自信的方向,不断的钻研深入。 众所周

iOS开发之上下文交互菜单(UIContextMenuInteraction)-爱代码爱编程

1. 概述 在iOS13及以后的版本,苹果将用UIContextMenuInteraction取代上文中提到的Peek和Pop的功能,Peek和Pop的功能需要依赖硬件设备,UIContextMenuInteraction则摆脱了对硬件的依赖。 在iOS9以及iPhone6s及以上的设备上,苹果推出了Peek和Pop功能,并在预览时上滑提供可供操作的操

swift WkWebView的返回,goback,跳过同级-爱代码爱编程

swift WkWebView的返回,goback,跳过同级 在使用wkwebview的时候,需要增加顶部的返回图标,可以直接调用gaback函数,但是在web页中,同一页的不同tab也会被压入返回的backForwardList.backlist中,所以导致点击返回图标会停留在同一页面。针对这个bug的解决方法如下。 @objc private fu

swift基础day5---继承-爱代码爱编程

//继承 Inheritance class Transpotation { var petrol: Int = 10 //油量 //行驶 func drive() { //具体由子类实现 if petrol == 0 { self.addPetrol() }

【iOS/Swift】自定义操作符 prefix postfix infix-爱代码爱编程

说明 操作符预定义 prefix infix postfixprefix: 运算符在运算值的前方; postfix:运算符在运算值的后方;infix:运算符在运算值之间precedencegroup:定义运算符的其它属性prefix operator ^ postfix operator ^- infix operator ^^ 代码示例 //

swift基础day5---面向对象(封装、多态)-爱代码爱编程

封装 把隐藏属性、方法与方法实现细节的过程称为封装 目的:1.使用数据更加方便,2.为了数据保护。 隐藏属性和方法 使用访问控制修饰符将类和其属性方法封装起来。 修饰符: private:所修饰的属性或者方法只能在当前 Swift 源文件里可以访问,在别的文件里访问会出错.public:所修饰的属性或者方法对于引用了该文件或者模块的文件来讲,都能访

iOS_Swift根据类名创建类-爱代码爱编程

String需要根据项目名生成命名空间前缀+类名 再将String转换成需要生成的类型Type 再调用 Type.init() 生成对象 // MARK: - 根据String生成ViewController func classFromString(_ className: String) -> UIViewController? { // 项目

swift基础day5---方法-爱代码爱编程

实例方法是被某个类型的实例调用的方法,类型方法是定义在类型本身上调用的方法。 实例方法 属于某个特定类、结构体或者枚举类型实例的方法。提供访问和修改实例属性的方法或提供与实例目的相关的功能,并以此来支撑实例的功能。 实例方法能够隐式访问它所属类型的所有的其他实例方法和属性。只能被它所属的类的某个特定实例调用,并且不能脱离于现存的实例而被调用。 cla

iOS_Swift 实现UITextView,显示前n行,点击显示“更多”,再点击“收起”效果-爱代码爱编程

MOAttributedTextView 仅一个类Class实现:显示前n行文案,点击展开,再点击收起效果。继承自UITextView,运用NSMutableAttributedString实现 1、Effect display Test1:直接使用效果如下: Test2:在TableViewCell里使用效果如下: 2、核心代码: /

swift基础day5---属性-爱代码爱编程

属性 计算属性:直接计算(而不是存储)值,可以用于类、结构体和枚举。 存储属性:将常量和变量存储为实例的一部分,只能用于类和结构体。 类型属性:与类型本身关联。 属性观察器可以添加到类本身定义的存储属性上,也可以添加到从父类继承的属性上。可以利用属性包装器来复用多个属性的 getter 和 setter 中的代码 存储属性:struct FixedLe

swift基础day4---结构体和类-爱代码爱编程

结构体和类对比 共同点: 定义属性用于存储值定义方法用于提供功能定义下标操作用于通过下标语法访问它们的值定义构造器用于设置初始值通过扩展以增加默认实现之外的功能遵循协议以提供某种标准功能 不同点:优先使用结构体,因为它们更容易理解,仅在适当或必要时才使用类。继承允许一个类继承另一个类的特征类型转换允许在运行时检查和解释一个类实例的类型析构器允许一个类实

为什么我找不到我的崩溃日志-爱代码爱编程

为什么我找不到我的崩溃日志?      当我正在努力工作(划水)的时候,总有同事上来就滴我一下:同学,我打开首页的时候崩溃了,你帮我看下为什么手机上没有崩溃日志了?这时,我总想来一句WTF?当然,说归说,闹归闹,该说的我还是得说,对于找不到崩溃日志的情形,且听我慢慢道来 怎么拿到我的崩溃日志? 通常情况下,我们能够在系统设置->隐私->

【NOTE】SwiftUI中的数据流控制(一)各种State-爱代码爱编程

NOTE \ SwiftUI中的数据流控制(一)各种State 文章目录 NOTE \ SwiftUI中的数据流控制(一)各种State@State@Binding@AppStorage @SceneStorage@FocusedBinding SwiftUI会根据View(视图)中包含数据的变化自动刷新,因此其设计了多种Property Wr

swift基础day4---枚举-爱代码爱编程

枚举(enumerations) 枚举成员可以指定任意类型的关联值存储到枚举成员中,枚举是一等类型。枚举的特性:计算属性,提供枚举值的附加信息,实例方法,提供和枚举值相关联的功能,也可以定义构造函数,来提供一个初始值,可以在原始实现的基础上扩展它们的功能,提供标准功能。 以一个大写字母开头。给枚举类型起一个单数名字而不是复数名字,以便于:var dire

swift基础day4---闭包-爱代码爱编程

闭包 闭包的结构 函数包含:函数名,参数列表,返回值,函数体。 闭包:{(参数列表) ->fan返回值 in 闭包体} //标准函数 func myFunc(param: Int) -> Int{ return param * param } //闭包 let myClosures = {(param: Int) -> In