滚动视图必须知道内容视图的大小,以便于知道什么时候停止;一般而言,当滚动出内容的边界时,它就返回了。 ...而如果该属性设置为NO,ScrollView本身不处理这个消息,全部交给子视图处理。 ...你的代码变得很牢固地配对在一起,它实际上变成了超类的一部分,你无法从UIScrollView中析取它,之后用其它东西代替,如果它在你控制器中且为控制器的一部分,在之后更容易改变它工作的方式和重新安排你应用程序的一些部分...它在这些对象之间保持了松散的配对,视图本身与视图控制器或任何其它的控制器对象,委托不是滚轴视图的直接子类,它比起牢固配对的子类更加的松散。...的一个属性,主要用于点击设备的状态栏时,是scrollsToTop == YES的控件滚动返回至顶部。
//7.内容视图的距离,是从封闭的滚动视图插图 @property(nonatomic) UIEdgeInsets contentInset; around content //8.滚动视图的代理...tracking; //24.一个布尔值 知识用户是否已经开始滚动内容 @property(nonatomic,readonly,getter=isDragging) BOOL dragging; //25.返回的内容是否在滚动视图后...,UIScrollView会给子视图发送touchCancel消息,而如果该属性设置为NO,ScollView本身不处理这个消息,全部交给子视图处理 @property(nonatomic) BOOL...滚动动画停止时执行代码改变时触发,也就是setContentOffset改变的时候 - (void)scrollViewDidEndScrollingAnimation:(UIScrollView *...)scrollView; //50.返回一个放大或者缩小的视图 - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView;
其它三个都是通过对应的控制器类来完成工作,而不是直接构建和管理视图。 ...从语法上 说,UIViewController是视图控制器的父类。视图控制器类是没有可视化表示的抽象类,只有它管理的视图才提供可视画布。记住:1....推入时,新的视图控制器从右方滑入屏幕(假定animated:YES)。向左指的Back后退按钮出现,可返回到上一步,且Back按钮用的是上一个视图控制器的标题。 2....事件处理 如图所示,一般情况下,当一个视图不响应用户事件时,它会将事件传递给它的父视图。但是,当视图被视图控制器管理时,它会将事件首先传递给视图控制器。...如果视图控制器也不处理该事件,则视图控制器会将数据传递给视图控制器视图的超类,一般是UIWindow.
从后往前遍历子视图重复执行 指的是按照 FILO 的原则,将其所有子视图按照「后添加的先遍历」的规则进行命中测试。...的根视图,则其 nextResponder 为窗口对象;若控制器是从别的控制器 present 出来的,则其 nextResponder 为 presenting view controller; UIWindow...系统通过hitTest方法沿视图层级树从底向上(从根视图开始),从后向前(从逻辑上更靠近屏幕的视图开始)进行遍历,最终返回一个适合响应触摸事件的 View,并在过程中为 UITouch 记录了 view...当用户在 UIScrollView 的一个子视图上按下时,UIScrollView并不知道用户是想要滑动内容视图还是点击对应子视图,所以在按下的一瞬间, 事件 UIEvent 从 UIApplication..., in view: UIView) -> Bool // 在UIScrollView的子类中重写该方法,用于返回是否取消已经传递给子视图的事件,默认当子视图是UIControl时返回NO,否则返回YES
一、视图控制器 UIViewController采用懒加载的方式,也就是说第一次访问到view属性时才会加载或创建它。...由于视图由视图控制器管理,所以讨论视图的加载方式时,主要讨论视图控制器的加载方式。 通过Storyboard加载:这是苹果推荐的方式。...此时整个视图层次(view hierarchy)已经被放到内存中。 无论是从nib文件加载,还是通过纯代码编写界面,viewDidLoad方法都会执行。...我们可以重写这个方法,对通过nib文件加载的view做一些其他的初始化工作。比如可以移除一些视图,修改约束,加载数据等。...7、ViewWillDisAppear 视图即将消失 8、ViewDidDisAppear 视图已经消失 9、ViewWillUnload(已废弃) 当内存过低时,需要释放一些不需要使用的视图时,即将释放时调用
drawRect方法依赖Core Graphics框架来进行自定义的绘制 缺点:它处理touch事件时每次按钮被点击后,都会用setNeddsDisplay进行强制重绘;而且不止一次,每次单点事件触发两次执行...能 因为UIScrollView的内容尺寸是根据其内部的内容来决定的,所以是可以在viewDidLoad中设置的 补充:(这仅仅是一种特殊情况) 前提,控制器B是控制器A的一个子控制器,且控制器B的内容只在控制器...A的view的部分区域中显示 假设控制器B的view中有一个UIScrollView这样一个子控件 如果此时在控制器B的viewDidLoad中设置UIScrollView的contentSize的话会导致不准确的问题...如何找到最合适处理事件的控件: 首先,判断自己能否接收触摸事件 可以通过重写hitTest:withEvent:方法验证 其次,判断触摸点是否在自己身上 对应方法pointInside:withEvent: 从后往前...在视图层次结构的最顶层视图也不能处理接收到的事件或消息,则将事件或消息传递给UIWindow对象进行处理 如果UIWindow对象也不处理,则将事件或消息传递给UIApplication对象 如果UIApplication
为了良好的交互体验,相信大家在对待scrollView无数据时的提示页都会使用一些第三方来定制,最典型的就是使用DZNEmptyDataSet。...我们现在的目的就是让目标控制器或者目标视图在遵守我们的协议后,就可以有实现空白页的功能。...或者collectionView都是写在控制器里,那我们面向的类就规定为UIViewController,或许也有人写在UIView里,不过这里先按UIViewController来写吧 // MARK...{ // 返回提示图片 } public func title(forEmptyDataSet scrollView: UIScrollView!)...因为UserDefaults是单例,整个进程共用这一份资源,如果你当前controller遵守了我们的协议LXFEmptyDataSetable并做出了定制,那么当下一个controller在遵守协议后使用了默认定制时
效果预览 一、前期准备 有一个支持全屏侧滑返回的视图控制器ViewController,ViewController.view上有一个UIScrollView,UIScrollView上有UISlider...=0时,左滑不能触发全屏侧滑pop返回的手势 ; ?...UIScrollView和全屏侧滑pop返回手势冲突示意图 现象2 、问题1解决后,你会发现拖拽UIScrollView第一页上的UISlider时,向右拖拽时却触发了全屏侧滑pop返回的手势,而UISlider...UISlider与UIScrollView、全屏侧滑pop返回手势冲突示意图 现象3 、当你长按UISlider超过150ms后直接拖拽,就不存在现象2中UISlider与UIScrollView、全屏侧滑返回的冲突问题了...,解决了UISlider与UIScrollView之间的冲突,同时也解决了向右拖拽时却触发了全屏侧滑pop返回的问题。
关于Autolayout和Masonry自动布局的几个坑 自动布局 02 Mar 2016 0 Comments 前言 最近遇到一个复杂视图:根控制器里面有上下两个子控制器,子控制器中各自实现类似PageView...的视图,然后PageView的每一页是一个WebView,同时中间有个可拖拽的控件,实现上下两个控制器视图的大小调整。...如果希望立刻生成新的frame需要调用此方法,利用这点一般布局动画可以在更新布局后直接使用这个方法让动画生效。...self.isBigger;}];button;}); 关于UIScrollView的自动布局 上面提到的页面遇到了多重的UIScrollView,使用自动布局的时候也是够蛋疼的。...主要注意点为: UIScrollView自身的约束按照正常的视图添加。 内部子控件的约束不能按照UIScrollView来设置,同时必须完整,否则撑不起contentSize。
- (void)animateTransition:(id )transitionContext{ //取出转场前后的视图控制器...UIViewController *)[transitionContext viewControllerForKey:UITransitionContextToViewControllerKey]; //取出转场前后视图控制器上的视图...percentComplete]; //完成转场操作 [self finishInteractiveTransition]; //取消转场操作 [self cancelInteractiveTransition]; 3、转场时最上层的视图控制器需要遵循...同上 3、在push动画之前设置导航控制器的转场动画代理,转场时最上层的视图控制器需要遵循的协议,并设置为代理,并实现如下代理方法: /...,就不需要触发滑动手势, return NO; } return YES; } 解决UIScrollView的滑动手势与全屏侧滑手势的冲突 创建一个UIScrollView
- (void)animateTransition:(id )transitionContext{ //取出转场前后的视图控制器...UIViewController *)[transitionContext viewControllerForKey:UITransitionContextToViewControllerKey]; //取出转场前后视图控制器上的视图...percentComplete]; //完成转场操作 [self finishInteractiveTransition]; //取消转场操作 [self cancelInteractiveTransition]; 3、转场时最上层的视图控制器需要遵循...同上 3、在push动画之前设置导航控制器的转场动画代理,转场时最上层的视图控制器需要遵循的协议,并设置为代理,并实现如下代理方法:...,就不需要触发滑动手势, return NO; } return YES; } 解决UIScrollView的滑动手势与全屏侧滑手势的冲突 创建一个UIScrollView
自动布局 02 Mar 2016 Comments 前言 最近遇到一个复杂视图:根控制器里面有上下两个子控制器,子控制器中各自实现类似PageView的视图,然后PageView的每一页是一个WebView...,同时中间有个可拖拽的控件,实现上下两个控制器视图的大小调整。...如果希望立刻生成新的frame需要调用此方法,利用这点一般布局动画可以在更新布局后直接使用这个方法让动画生效。...self.isBigger; }]; button;}); 关于UIScrollView的自动布局 上面提到的页面遇到了多重的UIScrollView,使用自动布局的时候也是够蛋疼的。...主要注意点为: UIScrollView自身的约束按照正常的视图添加。 内部子控件的约束不能按照UIScrollView来设置,同时必须完整,否则撑不起contentSize。
这里根据请求失败的返回码处理一下,当statusCode == 403时,我们再次发送用户登录的通知 /// 封装 AFN 的 GET/POST 请求 /// /// - Parameters: ///...处理弹出登录界面的一些UI细节 如果我们不做一些提示,或者动画过度一下的话,直接就硬生生弹出登录控制器,逻辑上没有问题,但是交互总是感觉不那么好。因此我们最好做一点小提示。 但是在哪里做提示比较好呢。...当我们点击登录的按钮的时候,我们期望立刻弹出登录控制器。 但是我们刚才写的代码,真的有影响到这里了。点击登录也是延迟2秒钟才弹出登录界面,给人的感觉总是怪怪的。...上面说自动布局工作原理的时候提到过 如果希望某些约束提前更新!...,所以开发时,不能在这个方法里面处理UI,而且如果是xib开发的话,你打印视图的话,结果都是nil的。
目录: 一、设置导航栏样式 二、解决自定义导航栏返回按钮后侧滑不可用问题 三、隐藏导航栏底部的分割线 四、导航栏引起的布局问题 相关文章:iOS状态栏的使用总结 一、设置导航栏样式 设置导航栏的样式可分为全局设置与局部设置...导航栏视图层级图 从图中可以看出,导航栏的底部分割线是一个UIImageView对象,而且高度只有0.5,所以我们可以据此获取到导航栏的底部分割线对象,在一个视图控制器中实现此需求,代码如下: #import...,默认为YES,用于优化滑动类视图(继承于UIScrollView的视图)在视图控制里的显示: iOS系统的导航栏UINavigationBar与标签栏UITabBar默认都是半透明模糊效果,在这种情况下系统会对视图控制器的...,默认值是UIRectEdgeAll,即:当前视图控制器里各种UI控件会忽略导航栏和标签的存在,布局时若设置其原点设置为(0,0),视图会延伸显示到导航栏的下面被覆盖。...self.edgesForExtendedLayout=UIRectEdgeNone 3.导航栏透明属性translucent 上述两种属性都是在解决导航栏半透明情况下的布局问题,但是如果我们的需求就是导航栏不透明,那么视图控制器里的控件就会默认从
普通的UIView绘制圆角时并不需要maskToBounds属性。也就是普通的视图圆角对卡顿没有影响。 既然有普通就有特殊:UIImageView和UILabel以及我还没有发现的=。...然后是判断needLoadArr中是否包含有当前indexPath,若没有返回。继续判断当前TableView是否处于快速回到顶部的过程中,如果是的话也不绘制。...= 效果图 真机不卡!真机不卡!真机不卡!重要的事情说三遍 放一个效果图,老司机写的控制器里面看不到任何一个TableView代理然而还是能正常显示并实现很多功能。...tableView对dataSource是弱引用,如果不持有helper就被释放了。 就是这么一个思路。的确该写你都写了,不过好处就是你以后把helper类拿到另一个工程还可以直接用。...= 添加屏幕判断,当位置方向时,默认返回竖屏 额外补充动画代理、支持CAAnimation及DWAnimation version 1.1.2 展示动画逻辑修改,DWAnimation动画展示方法替换
你的滚动视图只能同一时间在一个方向上滚动,但是当你从对角线拖动时,是时刻在水平和竖直方向同时滚动的。...UIScrollView *)scrollView; 视图开始减速时触发的方法 - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView...; 视图减速结束时触发的方法 - (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView; 视图动画结束时触发的方法,使用...set方法设置偏移量后回触发 - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView; 返回进行缩放的视图 - (void)scrollViewWillBeginZooming...:(UIScrollView *)scrollView; 返回yes,开启快捷滚动回顶端,将要滚动时调用 - (void)scrollViewDidScrollToTop:(UIScrollView
专用横向启动画面,可省略 1024x768或者1024x748 Default.png iPhone默认启动图片,如果没有提供上面几个iPad专用启动图片,则在iPad上运行时也使用Default.png(不推荐...1.3 启动时显示状态栏 • 在-info.plist文件中加入选项 "Status bar is initiallyhidden",值为 YES 在 AppDelegate.m...launchOptions方法内加入代码: [[UIApplication sharedApplication] setStatusBarHidden:NO]; 【注意】 如果你的程序同时使用了导航栏作为根视图控制器...[super viewDidLoad]; [self setupScrollView]; [self setupPageControl]; } //创建程序第一次加载要显示的视图...引导页采用本地缓存方式,支持从服务端动态加载然后更新显示。 4.3.2 LaunchVC弹出逻辑 LaunchVC弹出逻辑(注意只加载一次): if (!
添加一个视图 视图的层次用index来区分,这个值从0开始以步长1依次增加,index为0的时候代表视图层次的最底层,下面是苹果官方文档对Views的介绍的截图: ? ...UITableView类是UIScrollView类的子类,用于管理数据列表,如图二,还有其他的容器视图在这就不一一列举啦。 ? ...UIAlertView类在屏幕上弹出一个蓝色的警告框,而UIActionSheet类则从屏幕的底部划出动作框 ? ...6.导航视图 页签条和导航条和视图控制器结合使用,为用户提供从一个屏幕到另一个屏幕的导航工具。...nonatomic, strong) UIView *subView; @end //-------实现部分----------- @implementation MainViewController //主视图加载后要做的事情
系统内部的实现中如果布局引擎在布局时发现某个视图没有设置高度或者宽度约束那么就会去调用这个视图的intrinsicContentSize方法,如果这个方法返回了正常的尺寸则视图就按这个尺寸来进行渲染和展示...在设置约束依赖时将容器视图的上下左右分别依赖UIScrollView视图的上下左右边界,如果需要上下滚动则将容器视图中的最底部子视图的底部边界依赖容器视图的底部边界。...如果不需要水平滚动则改为将容器视图的宽度等于UIScrollView视图的宽度。通过这样的设置后UIScrollView视图的contentSize将得到自动的计算。...2.UIScrollView的滚动 MyLayout&TangramKit对于处理和UIScrollView进行结合时进行特殊处理,当将一个布局视图添加到滚动视图时,布局系统内部会负责处理滚动视图的contentSize...要实现UIScrollView滚动时,只需要在一个滚动视图内添加一个布局视图,然后将所有其他子视图都添加到这个布局视图中去,这个和上面的AutoLayout的处理方式是一样的,最后将布局视图的尺寸自适应属性设置为
当展示的内容较多,超出一个屏幕时,用户可通过滚动手势来查看屏幕以外的内容。 普通的 UIView 不具备滚动功能,不能显示过多的内容。...UIScrollView是一个能够滚动的视图控件,可以用来展示大量的内容,并且可以通过滚动查看所有的内容 1.1 工作原理 在缩放的时候,原理是操作被缩放控件的的transform数值。...缩放结束后 scrollView 本身的 frame 并没有发生变化 缩放结束后 imageView 本身的 bounds 也没有发生变化 缩放结束后 imageView 的 center 发生了变化...设置 缩放比例 让代理对象返回需要缩放的视图控件 // 设置最小缩小比例 scrollView.minimumZoomScale = 0.2; // 设置最大放大比例...scrollView.maximumZoomScale = 2; // 设置代理 scrollView.delegate = self; 让代理对象返回需要缩放的视图控件
领取专属 10元无门槛券
手把手带您无忧上云