首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

iOS 面向协议封装全屏旋转功能

本篇文章只有一个目的,那就是只要遵守协议,一行代码随意切换全屏~ 如果对面向协议有疑问同学可以看下我之前两篇文章 iOS - Swift 面向协议编程(一) iOS - Swift 面向协议编程...lxf_FullScreenable_1 以下分两种情况说明 UIViewController func enterFullScreen( specifiedView: UIView,...= nil ) 以上两个方法是对switchFullScreen抽离,使调用时对参数传递更加清晰 1、遵守协议 FullScreenable class LXFFullScreenView:...lxf_FullScreenable_3 结语 这里相关说明已罗列完毕,有什么不清楚可以下载Demo看看,或者在文章下方留言提问 LXFProtocolTool 主要是通过协议方式来方便快捷地实现一些实用功能...,除了本文提及全屏旋转功能外还有其它实用功能封装,具体内容可以 Wiki首页 查找。

1K60
您找到你想要的搜索结果了吗?
是的
没有找到

iOS 面向协议方式封装空白页功能

或者collectionView都是写在控制器里,那我们面向类就规定为UIViewController,或许也有人写在UIView里,不过这里先按UIViewController来写吧 // MARK...// 3、实现方法写在这里 } 3、定义功能方法 将scrollView传递进来,让我们定义方法来暗地里做些操作 func lxf_EmptyDataSet(_ scrollView: UIScrollView...要明白这里self指的是UIViewController,考虑UIView可能,这里我就让万物对象之父NSObject来遵守,并实现对应数据源方法和代理方法 extension NSObject...,非常地恰巧,我们定义方法lxf_EmptyDataSet需要外界将UIScrollView传递进来,在DZNEmptyDataSet数据源方法和代理方法也有scrollView。...UIImage else { return UIImage(named: "LXFEmptyDataPic") } return tipImg } 5、外界使用姿势 class

1.4K50

Swift基础语法(四)

Result 在Swift5之前,我们一般是采用上面的方式来处理异常,在Swift5之后,苹果推出了一个Result枚举,Result枚举可以更加优雅地去处理异常。...所以在Swift5,新增了一个枚举Result,使我们能够更简单、更清晰地处理复杂代码错误。...objc func sleep() {} // 包含隐式@objc } where关键字 在Swift,很多地方都用到了where关键字,这里where和数据where差不多,都是用于条件过滤...访问权限 模块和源文件 模块:独立单元构建和发布单位,可以理解为一个特定功能代码集合,并且可以使用Swiftimport关键字导入另一个模块。...Swift类名完整形式是:“命名空间+类名”,我们可以尝试在类打印当前类来查看一下完整名字: class ViewController: UIViewController { override

3.9K20

优雅使用UITableView

] 再看celldequeue代码 [image.png] 数据绑定,全部分散到了每个cell。...高度计算 在iOS8之后UITableView推出了Self-sizing功能,所以Cell高度改变 UIView *dummyView = [[UIView alloc] init...响应链可以解决问题: 扩大相应区域 超出父类视图相应依然可以传递 垮图层传递事件 找到UIViewUIViewController - (UIViewController *)viewController...; } ButtonCell事件绑定代码: [image.png] 这里我们还是要用一个协议: [image.png] 注意 用这个协议主要是方便代码阅读,而且在Swift是必须使用协议,因为编译时找不到这个方法...部分,List部分我会在demo给出 关于Detail和List概念我会在第三节中介绍,第二节是Swift思路,Swift可以用到泛型,代码更优雅。

95500

唯一可行 iOS 架构

在很短时间内,VIPER 变得流行起来,但是后来我们知道它有问题。这种体系结构需要大量协议,类以及层之间数据传递。但是由于某些原因,所有这些额外工作并不能使我们设计更好,更易读。...如何将视图划分为 View 和 Controller?通常,它也适用于 iOS,甚至包含 UIViewUIViewController iOS SDK。...重要是要了解它是如何实现。更确切地说,要意识已经实现了 MVC。UIViewUIViewController 是已经在 iOS SDK 实现类。...它是基于 “MVC是具有3种类和巨大UIViewController模式”错误思想而创建。为了解决这个“问题”,VIPER 按 5 类进行了更多分解。...在 OOP ,常见任务是了解我们应该创建哪些实体,如何将它们彼此关联以及如何命名它们,从而以最清楚地描述代码。

1.2K20

如何将SQLServer2005数据同步Oracle

有时由于项目开发需要,必须将SQLServer2005某些表同步Oracle数据,由其他其他系统来读取这些数据。不同数据库类型之间数据同步我们可以使用链接服务器和SQLAgent来实现。...假设我们这边(SQLServer2005)有一个合同管理系统,其中有表contract 和contract_project是需要同步一个MIS系统(Oracle9i)那么,我们可以按照以下几步实现数据同步...1.在Oracle建立对应contract 和 contract_project表,需要同步哪些字段我们就建那些字段Oracle表。...我们将Oracle系统作为SQLServer链接服务器加入SQLServer。...--清空Oracle表数据 INSERT into MIS..MIS.CONTRACT_PROJECT--将SQLServer数据写到Oracle SELECT contract_id,project_code

2.9K40

使用@MainActor自动在主线程更新UI

Swift 5.5 终于为开发者带来了async,await,actor这些便捷异步语法,而其中一个小小@MainActor语法,能带来让我们开发更加便捷安全。...手动dispath主线程 在swift 5.5 之前,我们需要手动使用DispatchQueue.main来让代码运行在主线程,特别是UI更新操作。这样没问题,但是略显麻烦,而且容易遗漏。...@MainActor class UILabel: UIView @MainActor class UIViewController: UIResponder 也就是,在swift concurrency...系统,被@MainActor装饰过类,及其子类属性和方法,都会自动在主线程,get,set,或者call。...result = result } } } @MainActor 不会对Callback代码生效 @MainActor 必须使用在Swift async/await Concurrency环境

92310

iOS14开发-触摸与手势识别

触摸事件传递与响应 当触摸事件产生以后,App 里有很多 UIViewUIViewController,到底应该谁去响应这个事件呢?...事件传递 当 iOS 程序中发生触摸事件后,系统会将事件加入 UIApplication 管理一个任务队列。 UIApplication 取出最前面的事件传递给 UIWindow。...此时需要重写 UITabBar point方法,判断当前触摸位置是否在中间凸起按钮坐标范围内,如果在返回 true。这样可以让触摸事件传递凸起按钮,并让其成为最佳响应者。...响应者对于触摸事件响应和传递都是在touchesBegan方法完成。该方法默认是将事件顺着响应者链向上传递,即将事件交给上一个响应者进行处理。...默认next对象为: (1)UIView:若当前响应者是 UIViewController view,则next是 UIViewController,否则上一个响应者是其父 UIView

2.2K20

【iOS开发】Responder Chain做事件传递

cell里面可能还有几层UI,如何将这种层级很多很复杂UI页面的事件传递Controller中进行处理。一般做法是用Block一层一层往外传,要不就是用Delegate一层层往外传。...先说一下iOS系统事件传递,它是通过UIResponder从上往下传递,UIWindow, UIViewController, UIView等都是继承自UIResponder,所以它们都可以响应事件...开始遍历,一直找到最外层view3.如果view3不处理事件,就是传递view2,一级一级往上传递。...一般来说我们一个页面上view不管在哪个层级,它层级链里面都是有UIViewController这一层。所以我们可以把事件标识好,在UIViewController这个层级再处理。...重写routerEventWithName方法,处理掉事件,一般可能是UIViewController

62441

《iOS UI 开发捷径 利用 Interface Builder 高效、优雅地开发 UI》 读书笔记第1章 Interface Bundle 概要第2章 使用 Interface Builder第3

View 连线 xib 既可以与 UIView 关联,也可以与 UIViewController 关联,也可以同时关联 UIViewUIViewController 使用 xib 通过 Bundle...UIView view.addSubview(testView) } 使用与 UIViewController 子类源文件关联 xib Demo HomeViewController.swift...Objective-C IBAction IBOutlet IB_DESIGNABLE IBInspectable IBOutletCollection(ClassName) @IBDesignalbe 可以不运行程序情况下把源文件一些代码实时渲染...IB ,但是源文件必须是 UIView 或者 NSView 子类。...无法连线 IB 文件是否与源文件关联 @IBAction 红色提示 先在源文件定义好方法,再从源文件 拖 IB 文件进行 连线

2.4K80

【从零开始用Swift开发一个iOS应用(仿微博)】开篇-1. demo上手体验

最近在学iOS开发,本系列会针对iOS从前开发进行全面讲解,小到开发工具使用,大应用市场上线。 ?...二、代码实现 2.1 程序入口说明 Application/AppDelegate.swift文件@UIApplication注解,表示这个Class类是程序入口 ?...三、上述示例swift与object-c语法对比 3.1 创建视图类比 - Swift: UIView(XXX:) - OC: [[UIView alloc] initWithXXX:] 类名()...,不需要使用`:` OC: @selector 3.7 调试对比 Swift: print(xxx) 效率高,log不包含时间,用#function来打印当前执行方法 OC: NSLog,用__FUNCTION...如下图所示,我在注释添加了MARK、TODO、FIXME标签前缀,这些特殊标记锚点菜单将会显示在导航栏上,点击菜单即可跳转到对应注释地方,非常方便。 ?

3.7K31

设计模式之创建型模式

解决这个问题方法是可以使用参数化工厂方法,可以给工厂方法传递一个参数(标识符),然后根据标识符来实例化特定产品,这样我们就不需要各种 PageView 子类了。...像 Self、JavaScript 这样基于原型语言可以说处处都用到了原型模式,而像SmallTalk、OC、Ruby 等动态语言中,类本身可以当作对象传递并用其创建实例对象,甚至在 Swift 也可以直接用所谓元类型...它最大优点是灵活性,可以动态指定要创建对象,而这点,可以通过传递“元类型”或者利用范型轻易做到。...,因为用 Builder 构造出来产品往往差别很大,并没有一个统一接口,所以只需要在子类声明一个返回特定产品方法即可(当然本例其实最终构造产品都是UIView,是可以提供一个统一接口)。...但在 Swift ,只要使用let声明一个常量,用它指向一个实例,它 immutable 性质可以保证线程安全,然后把对应构造器设为 private 就可以了,像这样: private let instance

64040
领券