首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

iOS翻页视图控制器UIPageViewController应用

iOS翻页视图控制器UIPageViewController应用 一、引言     UIPageViewController是iOS少见动画视图控制器之一,通过它既可以创建类似UIScrollView...,UIPageViewControllerDelegate回调可以对翻页动作,屏幕旋转动作等进行监听。...UIPageViewController把从DataSource获取到视图数据渲染给View用于当前视图控制器展示。...二、创建一个UIPageViewController     首先新建一个类作为翻页视图控制器具体每一页视图控制器,使其继承于UIViewController: ModelViewController.h...上面初始化方法UIPageViewControllerNavigationOrientation属性设置翻页方向,枚举如下: typedef NS_ENUM(NSInteger, UIPageViewControllerNavigationOrientation

2.2K10

【iOS】UIViewController生命周期

UIViewController有2周期: 在UIViewController,View存在两个循环:载入循环和卸载循环。 载入循环 1》程序请求controllerview。...3》loadView方法运行例如以下操作: 假设你重载了这种方法,则必须创建必要view而且将一个非nil值传给UIViewControllerview属性。...假设你没有重载这个函数,UIViewController会默认使用UIViewControllernibName和nibBundle属性尝试从nib文件载入view。...假设没有找到nib文件,它尝试寻找一个与UIViewController类名匹配nib文件。 假设没有可用nib文件,那么它创建一个UIView作为它view。...viewDidUnload将会被运行,本视图全部子视图将被销毁,以释放内存,此时开发人员须要手动对viewLoad、viewDidLoad创建对象释放内存。

74120

【YFMemoryLeakDetector】人人都能理解 iOS 内存泄露检测工具类

我真的就是在“创建”时把数据记录到一个字典里,在“释放”时,从字典里移出对象;所谓检测,其实就是打印那个字典,仍然在字典很有可能就是泄露喽。 当然,还是有一些技术细节。...在字典中直接存储指针地址,而不是直接存储对象自身 存储指针地址好处是,就是不会因为存储本身影响对象引用计数。当然,指针地址本身,在 OC ,其实就是对象自身。...现在网上很多策略,基本也是这样。 对象创建,对于视图,拦截是 willMoveToSuperview: ;对于控制器拦截viewDidLoad 。...YFMemoryLeakDetector sharedInstance] setup]; } “见码如晤” YFMemoryLeakDetector.h 头文件部分,主要简化为暴露了存储可能有内存泄露情况视图和控制器字典属性.... */ [UIViewController aspect_hookSelector:@selector(viewDidLoad) withOptions:AspectPositionAfter

1.3K60

关于 循环引用问题

self.str); }; } self将block作为自己属性变量,持有block对象,而在堆block方法体里面又引用了 self ,就会导致循环引用。...方法,放在viewDidDisappear又限制太死,最好方法(NSTimer类别): @interface NSTimer (EXBlock) + (NSTimer *)ex_scheduledTimeWithTimeInterval...Analyze主要分析以下四种问题: 1、逻辑错误:访问指针或未初始化变量等; 2、内存管理错误:如内存泄漏等; 3、声明错误:从未使用过变量; 4、Api调用错误:未包含使用库和框架。...原理:MLeaksFinder是从UIViewController入手UIViewController在POP或dismiss之后该控制器及其上view,viewsubviews都会被释放掉,MleaksFinder...和新方法交换,并在新方法赋值标志YES,让其触发延迟事件。

3.2K20

iOS14开发-触摸与手势识别

属性 (1)window:触摸时所处 UIWindow。 (2)view:触摸时所处 UIView。 (3)tapCount:短时间内点按屏幕次数。可据此判断单击和双击操作。...// 返回位置是针对view坐标系。 // 调用时传入view参数的话,返回是触摸点在整个窗口位置 。 open func location(in view: UIView?)...-> CGPoint UIEvent 一个完整触摸操作是一个 UIEvent,它包含一组相关 UITouch 对象,可以通过 UIEvent allTouches属性获得 UITouch 集合。...响应者对于触摸事件响应和传递都是在touchesBegan方法完成。该方法默认是将事件顺着响应者链向上传递,即将事件交给上一个响应者进行处理。...默认next对象: (1)UIView:若当前响应者是 UIViewController view,则next是 UIViewController,否则上一个响应者是其父 UIView。

2.2K20

iOS项目——基本框架搭建

3.2 设置TabBarItem文字属性 在上述我们队图片修改之后,虽然tabBarItem图片可以完全按照我们设定图片进行显示,但是 在开发过程,我们很多时候还需要对tabBarItem标题字体...、字号等文字属性进行设定。...要设定tabBarItem文字属性,我们也有两种解决方案: 直接设置每一个tabBarItem对象 需要注意是: // 普通状态下文字属性 NSMutableDictionary *normalAttrs...: // 字典中用到key 1.iOS7之前(在UIStringDrawing.h可以找到) - 比如UITextAttributeFont\UITextAttributeTextColor - 规律...viewController都是懒加载,即都是在即将显示出来时才加载viewdidLoad,但是只有 tabbarcontroller是在一创建控制器时候就进行加载viewdidLoad

1.8K80

Swift-MVVM 简单演练(二)

所以我们需要判断好逻辑,在loadStatus,增加一个是否是上拉参数pullup: Bool 当上拉时候since_id设置0,max_id设置成取微博数据最后一条id 当下拉时候max_id...设置0,since_id设置成取微博数据第一条id 这里用三目运算就会很简单明了,swift如果能用三目判断,大家可以多用一下。...我们需要在HQBaseViewControllerviewDidLoad()方法里根据计算型属性userLogon来判断是加载数据还是什么都不做逻辑。...,之前在viewDidLoad()方法里面有过注册监听登录成功HQUserLoginSuccessNotification通知,虽然view置nil了,但是注册通知并没有销毁,再次执行viewDidLoad...,token就已经被置nil了,再有网络交互的话,就会弹出登录页面。

2.3K40

iOSMVC框架之控制层构建(下)

莫名问题和崩溃 懒加载视图使得我们视图属性必须要设置strong类型,而且代码实现是只创建一次。...我们可以从功能相似性角度出发将相同功能放在一个SB,不同大模块建立不同SB文件,这样就可以将一个SB根据应用模块分解多个小SB。...借助字典 如果界面元素非常多时,但是我们又不想让视图和数据模型之间产生关联,那么我们可以将UITableViewCellupdate方法改造只接收一个参数: 一个字典参数 -(void)update...:(NSDictionary*)params; 通过字典形式来做数据传递可以减少方法参数个数,而且现在也有非常多将数据模型转化为字典解决方案。...采用字典作为参数时会增加数据转换步骤,以及在UITableViewCellupdate方法一定要了解字典有哪些数据,并且外部调用时也要了解有哪些数据。

4.4K30

【IOS 开发】基本 UI 控件详解 (UIDatePicker | UIPickerView | UIStepper | UIWebView | UIToolBar )

属性值 : 国际化设置相关属性, 通常使用默认设置即可; (3) Interval 属性  Interval 属性值 : 设置两个时间选项时间间隔, 仅当采用 Time, Date and Time..., Count Down Timer 三个属性时有效; (4) Constraints 属性  Constraints 属性 : 设置控件最小时间 和 最大时间; (5) Timer 属性  Timer...行列属性读取方法 UIPickerView 行列属性读取方法 :  -- "numberOfComponents" 方法 : 获取 UIPickerView 可选列表选项个数; -- "numberOfRowsInComponent...:1 animated:YES]; //第一项 即 键值, 第二项 根据字典键值 选择 对应集合第一个元素 message = [NSString...tag, 我们将 View tag 设置1, 如果 View 是已经重用 直接返回, 如果没有重用, 创建 View 设置其 tag 1, 并返回

3.8K40

iOS 无侵入埋点组件总结

方案选择 通常业务都需要加埋点统计事件,但在每个业务类里埋点会导致每个页面内耦合了大量无关业务埋点代码使得代码不够整洁,所以放弃了代码埋点。...另外,由于在做 view 统计分析时,都是以页面单位,因此 SDK 在生成 viewPath 时,只到 view 所在 UIViewController 级别,而非根部 UIWindow。...而对于业务数据,数据是有持有者, 例如我们 Controller 一个属性值, 或者数据在 Model 某一个层级。就可以通过 KVC 方式来递归获取该属性值来取到业务数据。...对于手势,我们在创建时候进行 hook,方法 initWithTarget:action:。 3.3.3 实现原理 用运行时方法替换方法实现无侵入埋点方法。 实现原理图: ?...和 UIViewController 生命周期埋点不同是,一个类可能有许多不同 UIButton 子类,相同 UIButton 子类在不同视图中埋点也要区分出来,所以我们通过 NSStringFromClass

2.8K31

IOS 使用Core Data读写数据库

然后在【Attributes】设置区,点击+加号图标 User实体添加一个新属性userName,并设置Type类型String。...最 后使用相同方式,User实体添加第二个属性password。 //完成Entity模型创建之后,接着来创建一个托管对象类 NSManagedObject。...在项目名称文件夹上点击鼠标右键,然后选择菜单 【New File……】命令。...【Next】按钮,并在接下来选择待管理实体页面中选 【User】实体,从而创建一个名为UserNSManagedObject子类和名 User+CoreDataProperties.siwft...扩展文件,并在User.swift代码添加 一行代码@objc(User),因为在Swift类型文件,需要在暴露给OC使用 类、属性和方法声明前面,加上@objc修饰符 image.png

96940

iOS开发系列——纯代码实现iOS开发

下面我们就从一个项目建立一个类似于前面的登录界面。...,这个控制器距离UIWindow是最近;设置一个控制器根控制器和直接通过addSubView添加控制器视图(view属性)到window并不完全一样(例如如果仅仅添加控制器视图那么应用虽然可以显示但是不支持旋转...); UIViewController是视图控制器,主要用来控制UIView,在UIViewController内部有一个UIView(view属性); 在上面的代码我们首先在应用程序加载完毕之后加载一个...当主窗口设置可见过程中会调用视图控制器loadView方法来加载视图(注意视图控制器loadView方法是延迟加载,第一次调用视图控制器view属性才会调用此方法;由于makeKeyAndVisible...方法中会使用视图控制器view属性所以此时会调用视图控制器loadView方法),视图加载完之后调用viewDidLoad方法,在这个方法我们添加登录相关控件并将这些控件加载到视图控制器KCMainViewController

3.5K60
领券