前面两篇文章聊的UITableView和UICollectionView都是继承自UIScrollView,本篇文章就来简单聊聊UIScrollView。 ?...UIScrollView的一些常用的代理方法如下: #pragma mark - UIScrollViewDelegate //监听页面滚动,根据scrollView.contentOffset来做业务逻辑...- (void)scrollViewDidScroll:(UIScrollView *)scrollView { // NSLog(@"%f, %f", scrollView.contentOffset.x...中断一些业务逻辑,比如视频、gif的播放(在列表拖动的时候停止播放gif和视频) - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView...{ NSLog(@"scrollViewWillBeginDragging"); } //结束拖拽 - (void)scrollViewDidEndDragging:(UIScrollView *)
UIScrollView UIScrollView全部API学习。...- (BOOL)touchesShouldCancelInContentView:(UIView *)view; //30.浮点值 指定可应用于滚动视图的内容的最低比例因子 @property(nonatomic...)scrollView; //50.返回一个放大或者缩小的视图 - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView;...//51.开始放大或者缩小时候调用 - (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)...withView:(UIView *)view atScale:(CGFloat)scale; //53.是否支持滚动至顶部 - (BOOL)scrollViewShouldScrollToTop
UIView UIView类定义了一个矩形区域在屏幕上和管理内容的接口。 Overview 在运行时,一个视图对象处理任何内容的呈现它的面积,还处理任何与内容交互。...UIView类本身提供了基本行为与背景颜色填充的矩形区域。更复杂的内容可以被子类化UIView提出和实施必要的图纸和事件处理代码。...如何使用UIView类的详细信息,看到视图iOS编程指南。 The View Drawing Cycle 视图绘制需要的基础上发生。...UIView类做的大部分工作执行实际的动画,但你还必须表明哪个属性改变你想要动画。...因此,你应该叫UIView类的方法从代码中运行您的应用程序的主线程。这可能不是严格必需是唯一一次在创建视图对象本身,而是所有其他操作应该发生在主线程。
*)scrollView withView:(nullable UIView *)view{ NSLog(@"开始缩放"); } - (void)scrollViewDidZoom:(UIScrollView...:(nullable UIView *)view atScale:(CGFloat)scale{ NSLog(@"结束缩放"); } - (UIView *)viewForZoomingInScrollView...:(UIScrollView *)scrollView{ return [UIView new]; } ScrollerView缩放的代理回调 //滚动视图在和方法的实现结束时调用此方法,但仅在请求动画时调用...pageControl; @end @implementation ScrollViewPage - (void)viewDidLoad { [super viewDidLoad]; UIView...[self loadScrollViewCon:view]; [self loadPageCon:view]; } - (void)loadScrollViewCon:(UIView
模态化present和dismiss 自定义转场 1、创建一个遵循协议的动画过渡管理对象,并实现如下两个方法: //返回动画事件...transitionContext viewControllerForKey:UITransitionContextToViewControllerKey]; //取出转场前后视图控制器上的视图view UIView...[self finishInteractiveTransition]; //取消转场操作 [self cancelInteractiveTransition]; 3、转场时最上层的视图控制器需要遵循...同上 3、在push动画之前设置导航控制器的转场动画代理,转场时最上层的视图控制器需要遵循的协议,并设置为代理,并实现如下代理方法: /...的滑动手势与全屏侧滑手势的冲突 创建一个UIScrollView的类别UIScrollView+GestureConflict,重写如下方法: -(BOOL)gestureRecognizer:(UIGestureRecognizer
UIScrollView是iOS开发中经常用到的UI控件,像图片轮播之类的效果都可以用UIScrollView来实现,当然轮播什么的网上有很多教程了,我就不多说了。...今天主要讲三个跟交互有关的效果(稍微有点标题党啊,其实也没有多进阶……),也不是直接用的UIScrollView,而是它的子类UITableView和UIWebView。...这个属性是UIScrollView的,用来指定内容边界,UITableView继承自UIScrollView,当然也含有这个属性。...然后就是在 scrollViewDidScroll这个委托方法中做一点处理: func scrollViewDidScroll(scrollView: UIScrollView) { let offsetY...contentInset: //Mark: - Table view delegate(下拉显示提问按钮) override func scrollViewDidScroll(scrollView: UIScrollView
Here is a simple and sample code that demonstrate the photo slide function with zoom using uiscrollview...*bgScorllView; // background scrollview control the slide paging UIView *bgView; ...delegate - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView #import "ViewController.h"...bounds]]; [self.view addSubview:bgScorllView]; int width = 320*numberOfPhotos; bgView = [[UIView...UIColor blueColor]; [bgScorllView addSubview:bgView]; //[self.view addSubview:bgView]; } - (UIView
,则子视图会继续触发事件) - (BOOL)touchesShouldBegin:(NSSet *)touches withEvent:(UIEvent *)event inContentView:(UIView...*)view; - (BOOL)touchesShouldCancelInContentView:(UIView *)view; 重写这两个方法可以控制起子视图的事件响应 @property(nonatomic...)scrollView; 视图动画结束时触发的方法,使用set方法设置偏移量后回触发 - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView...; 返回进行缩放的视图 - (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view; 视图内容将要开始缩放时触发的方法...- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)
模态化present和dismiss 自定义转场 1、创建一个遵循协议的动画过渡管理对象,并实现如下两个方法: //返回动画事件...transitionContext viewControllerForKey:UITransitionContextToViewControllerKey]; //取出转场前后视图控制器上的视图view UIView...[self finishInteractiveTransition]; //取消转场操作 [self cancelInteractiveTransition]; 3、转场时最上层的视图控制器需要遵循...同上 3、在push动画之前设置导航控制器的转场动画代理,转场时最上层的视图控制器需要遵循的协议,并设置为代理,并实现如下代理方法:...的滑动手势与全屏侧滑手势的冲突 创建一个UIScrollView的类别UIScrollView+GestureConflict,重写如下方法: -(BOOL)gestureRecognizer:(
效果预览.gif 主要部分:创建一个继承于UIScrollView的子类视图WSLPhotoZoom,这个视图需要一个展示图片的UIImageView,然后再结合UIScrollView自带的缩放手势的代理方法来达到缩放效果...#pragma mark -- UIScrollViewDelegate //返回需要缩放的视图控件 缩放过程中 - (UIView *)viewForZoomingInScrollView:(UIScrollView...*)scrollView { return self.imageView; } //开始缩放 - (void)scrollViewWillBeginZooming:(UIScrollView...*)scrollView withView:(UIView *)view{ NSLog(@"开始缩放"); } //结束缩放 - (void)scrollViewDidEndZooming:(...UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale{ NSLog(@"结束缩放"); } //缩放中
,设定位置 self.scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)];...self.scrollView addSubview:secondLabel]; //委托方法 #pragma mark - UIScrollViewDelegate //返回缩放时所使用的UIView...对象 - (UIView*)viewForZoomingInScrollView:(UIScrollView *)scrollView{ return scrollView; }...//开始缩放时调用 - (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view{...:(UIView *)view atScale:(CGFloat)scale{ } //已经缩放时调用 - (void)scrollViewDidZoom:(UIScrollView
简介 项目主页:https://github.com/dzenbot/DZNEmptyDataSet 提示:主要用于UITableView和UICollectionView,也可以用于UIScrollView...,其实主要是前两个会用到空白或者网络出错页 采用给UIScrollView添加代理方法来给页面添加空白页,源码很有学习意义 导入工程 自动, pod 'DZNEmptyDataSet' 手动 https...://github.com/dzenbot/DZNEmptyDataSet 下载解压,Source文件夹下的文件拖入工程 导入头文件: #import "UIScrollView+EmptyDataSet.h...self.tableView.emptyDataSetDelegate = self; //这行代码必须加上,可以去除tableView的多余的线,否则会影响美观 self.tableView.tableFooterView = [UIView...*)scrollView { return [UIColor whiteColor]; } 如果需求无法满足,你可以自定义 - (UIView *)customViewForEmptyDataSet
touchesBegan: withEvent: / touchesMoved: withEvent: / touchesEnded: withEvent: 等只能被UIView捕获(如有问题请指出对请指出...,路过的大牛请勿喷),当我们创建 UIScrollView 或 UIImageView 时,当点击时UIScrollView 或 UIImageView 会截获touch事件,导致touchesBegan...解决办法:当UIScrollView 或 UIImageView 截获touch事件后,让其传递下去即可(就是传递给其父视图UIView) 可以通过写UIScrollView 或 UIImageView...category 重写touchesBegan: withEvent: / touchesMoved: withEvent: / touchesEnded: withEvent: 等来实现 //// UIScrollView...//#import "UIScrollView+UITouch.h"@implementation UIScrollView (UITouch)- (void)touchesBegan:(NSSet<UITouch
初学者第一次使用 UIScrollView 的时候,很可能会遇到 UIScrollView 滑动不了,或者明明添加了内容,却看不到的问题。...这里展示最简洁、最常态化的一种在 UIScrollView 中添加可以滑动的 UIImageView 的案例。...注意点1:必须保证 UIScrollView 的 contentSize 比它本身的 size要大,否则不可能滑动。...注意点2:现在 imageView 是 UIScrollView 的 subView,所以它的 frame 也是相对 UIScrollView 的,你想要让它和 UIScrollView 刚好一样高,就要把它的...当它的 y 值大到一定程度,超出了 UIScrollView,你自然就看不到内容了。
当然,如果contentSize的内容不足以布满整个UIScrollView时,滚动条将不会出现,UIScrollView也不会滚动。...原则2:subviews的size不能依赖于UIScrollView 因为UIScrollView的size依赖于subviews,而如果subviews的size再依赖于UIScrollView,就类似于操作系统中的死锁了...二、正确的姿势 1、在StoryBoard中拖入一个UIScrollView。 2、设置UIScrollView的约束。...3、拖入一个UIView作为ScrollView的子控件,这个控件就是作为容纳真正布局中控件的父控件,比如命名为contentView。...例如在UIView左上角放了一个Label(约束:top、leading),右下角放了一个Label(约束:bottom、trailing)。
增加了一个hoverStyle属性,可以设置鼠标移动到 UIView 之上的效果。...= UIView(frame: CGRect(x: 200, y: 200, width: 200, height: 200)) view.backgroundColor = .red...override func viewDidLoad() { super.viewDidLoad() view.addSubview(redView) } } UIScrollView...import UIKit class ViewController: UIViewController { lazy var scrollView: UIScrollView = {...let scrollView = UIScrollView(frame: CGRect(x: 0,
; [theScrollView setPagingEnabled:YES]; CGRect aFrame = theScrollView.bounds; UIView...* view; NSLog(@"Frame: %@", NSStringFromCGRect(aFrame)); view = [[UIView alloc] initWithFrame...theScrollView.bounds.size.width, 0); NSLog(@"Frame: %@", NSStringFromCGRect(aFrame)); view = [[UIView...theScrollView.bounds.size.width, 0); NSLog(@"Frame: %@", NSStringFromCGRect(aFrame)); view = [[UIView
滚动视图分页 UIScrollView的pagingEnabled属性用于控制是否按分页进行滚动。在一些应用中会应用到这一个特性,最典型的就是手机桌面的应用图标列表。...实现分页滚动的UI实现一般是最外层一个UIScrollView。然后UIScrollView里面是一个总体的容器视图containerView。...- (void)loadView { UIScrollView *scrollView = [[UIScrollView alloc] init]; if (@available...// #import - (void)loadView { UIScrollView *scrollView = [[UIScrollView alloc]...- (void)loadView { UIScrollView *scrollView = [[UIScrollView alloc] init]; if (@available
,UIScrollView用来监听外界的拉取动作。...class MyRefreshView: UIView, UIScrollViewDelegate { var scrollView: UIScrollView init(frame:...func beginRefreshing() { UIView.animate(withDuration: 0.3) { var newInsets = self.scrollView.contentInset...func endRefreshing() { UIView.animate(withDuration: 0.3, delay:0.0, options: .curveEaseOut,...MyRefreshViewDelegate: class { func refreshViewDidRefresh(_ refreshView: MyRefreshView) } class MyRefreshView: UIView
listed in UIView.h> may also be helpful....| | *UIView:0x7f9481c9d990- AMBIGUOUS LAYOUT for UIView:0x7f9481c9d990.minX{id: 13}, UIView:0x7f9481c9d990...self.isBigger; }]; button;}); 关于UIScrollView的自动布局 上面提到的页面遇到了多重的UIScrollView,使用自动布局的时候也是够蛋疼的。...具体使用技巧参考Masonry自动布局详解九:复杂ScrollView布局、在UIScrollView中使用Autolayout布局以及iOS_autoLayout_Masonry。...主要注意点为: UIScrollView自身的约束按照正常的视图添加。 内部子控件的约束不能按照UIScrollView来设置,同时必须完整,否则撑不起contentSize。
领取专属 10元无门槛券
手把手带您无忧上云