首页
学习
活动
专区
工具
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》程序请求controller的view。...3》loadView方法运行例如以下操作: 假设你重载了这种方法,则必须创建必要的view而且将一个非nil值传给UIViewController的view属性。...假设你没有重载这个函数,UIViewController会默认使用UIViewController的nibName和nibBundle属性尝试从nib文件载入view。...假设没有找到nib文件,它尝试寻找一个与UIViewController类名匹配的nib文件。 假设没有可用的nib文件,那么它创建一个空的UIView作为它的view。...viewDidUnload将会被运行,本视图的全部子视图将被销毁,以释放内存,此时开发人员须要手动对viewLoad、viewDidLoad中创建的对象释放内存。

    80420

    【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,view的subviews都会被释放掉,MleaksFinder...和新方法的交换,并在新方法中赋值标志为YES,让其触发延迟事件。

    3.3K20

    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.3K20

    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中如果能用三目判断的,大家可以多用一下。...我们需要在HQBaseViewController的viewDidLoad()方法里根据计算型属性userLogon来判断是加载数据还是什么都不做的逻辑。...,之前在viewDidLoad()方法里面有过注册监听登录成功HQUserLoginSuccessNotification的通知,虽然view置为nil了,但是注册的通知并没有销毁,再次执行viewDidLoad...中,token就已经被置为nil了,再有网络交互的话,就会弹出登录页面。

    2.3K40

    iOS的MVC框架之控制层的构建(下)

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

    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, 并返回

    4.9K40
    领券