1 简介 UIScrollView 是负责滚动的视图。苹果最强大的地方就在于其良好的UI展示,和UE体验。如果不会很好的使用UIScrollView,就等于丧失了苹果一般的法力。...普通的 UIView 不具备滚动功能,不能显示过多的内容。...缩放结束后 scrollView 本身的 frame 并没有发生变化 缩放结束后 imageView 本身的 bounds 也没有发生变化 缩放结束后 imageView 的 center 发生了变化...scrollEnabled 是否能滚动 showsHorizontalScrollIndicator 是否显示水平方向的滚动条 showsVerticalScrollIndicator 是否显示垂直方向的滚动条...:self.view.bounds]; // 创建UIImageView UIImageView *imageView = [[UIImageView alloc]initWithImage
对于我们的可缩放图像视图,我们将利用UIScrollView的缩放和平移功能。...基本上,我们将在UIScrollView中嵌套一个包含图片的UIImageView,它将处理所有我们扔给它的缩放、平移(和点击!)手势。...我们将用一个UIImageView来初始化这个类,它将被添加为一个子视图。...我们有了一个UIIm我们已经有了一个嵌套在UIScrollView中的UIImageView,一切都应该是可滚动和可平移的。但是我们如何设置我们的图像呢?...让我们给我们的类添加另一个初始化器,这样我们就可以在代码中设置图像名称。 medium.com/media/074d4… 就这样了!现在我们可以像这样通过图片名称以编程方式初始化我们的视图了。
void)setUpChildControlWithArr:(NSArray *)images andTag:(NSInteger)index{ _imageArr = images; // 装滚动视图的滚动视图...UIScrollView * scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, WIDTH, HEIGHT)];...zoomRect.origin.y = center.y - (zoomRect.size.height /2.0); return zoomRect; } //告诉scrollview要缩放的是哪个子控件...-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView { UIImageView *imgView = [scrollView.subviews...imageArr; // 创建图片浏览器 - (instancetype)initWithImageArr:(NSArray *)imags andTag:(NSInteger)index; // 显示图片浏览器
当你调用 setNeedsDisplay 方法时, UIKit 将会把当前图层标记为dirty,但还是会显示原来的内容,直到下一次的视图渲染周期,才会将标记为 dirty 的图层重新建立Core Graphics...MD5处理过的key来继续在磁盘中查询对应的数据, 如果找到了, 就会把磁盘中的数据加载到内存中,并将图片显示出来 如果在内存和磁盘缓存中都没有找到,就会向远程服务器发送请求,开始下载图片 下载后的图片会加入缓存中...,并写入磁盘中 整个获取图片的过程都是在子线程中执行,获取到图片后回到主线程将图片显示出来 设计个简单的图片内存缓存器 类似上面SDWebImage实现原理即可 一定要有移除策略:释放数据模型对象 控制器的生命周期...能 因为UIScrollView的内容尺寸是根据其内部的内容来决定的,所以是可以在viewDidLoad中设置的 补充:(这仅仅是一种特殊情况) 前提,控制器B是控制器A的一个子控制器,且控制器B的内容只在控制器...A的view的部分区域中显示 假设控制器B的view中有一个UIScrollView这样一个子控件 如果此时在控制器B的viewDidLoad中设置UIScrollView的contentSize的话会导致不准确的问题
2、代码实现,主要分为:添加UIScrollView,添加显示图片,添加UIPageControl,然后监听UIScrollView的滚动,根据滚动的位置来设置UIPageControl,最重要的是对于滚动到两个边缘时要特殊处理一下...define MAX_SIZE 7 #import "ViewController.h" @interface ViewController () //滚动视图...(0, 64, SCREEN_WIDTH, IMG_HEIGHT)]; //创建UIImageView并添加到UIScrollView中 for (int i = 0; i< MAX_SIZE...; i++) { UIImageView *img = [[UIImageView alloc]initWithImage:[self.imgArray objectAtIndex:i]...,因为第一张其实是最后一张图片 [sc setContentOffset:CGPointMake(SCREEN_WIDTH, 0) animated:NO]; //设置代理并添加到当前
//滚动视图对象 @property (retain, nonatomic) UIScrollView *scrollView; //视图中小圆点...imageNamed:@"text3.png"],[UIImage imageNamed:@"text4.png"], nil nil]; //把scrollView与pageControl添加到当前视图中...UIImageView *pImageView = [[[UIImageView alloc]initWithFrame:CGRectZero]autorelease];...rect.size.height = self.scrollView.frame.size.height; pImageView.frame = rect; //设置图片内容的显示模式...(自适应模式) pImageView.contentMode = UIViewContentModeScaleAspectFill; //把视图添加到当前的滚动视图中
启动页专题 总述: 两种方式,一种是使用系统自带的,按规则定义启动图片名称即可,显示为1秒,要想延长时间,用[nsthread sleepForTimeInterval:5.0] ,另一种就是自定义uiivew...launchOptions方法内加入代码: [[UIApplication sharedApplication] setStatusBarHidden:NO]; 【注意】 如果你的程序同时使用了导航栏作为根视图控制器...可能是因为调用 makeKeyAndVisible时会去判断当前程序是否显示状态栏,以此来布导航栏的位置。...viewDidLoad { [super viewDidLoad]; [self setupScrollView]; [self setupPageControl]; } //创建程序第一次加载要显示的视图...//设置表示的页数 pageControl.numberOfPages =3; //设置选中的页数 pageControl.currentPage =0; //设置未选中点的颜色
UIWindow可以不借助于父类视图显示在屏幕上,其余的视图都需要添加到父视图中才能显示。...我们还可以把视图看做是一个视图容器,视图上面还可以添加一个子视图。往父视图中添加的SubView会被放在一个数组中。...UITableView类是UIScrollView类的子类,用于管理数据列表,如图二,还有其他的容器视图在这就不一一列举啦。 ? ...具有这种行为的UIKit类包括 UIImageView, UILabel, UIProgressView, UIActivityIndicatorView;下面是UIProgressView显示视图 ?...6.导航视图 页签条和导航条和视图控制器结合使用,为用户提供从一个屏幕到另一个屏幕的导航工具。
前言:看到凤凰新闻 头条栏目的编辑推荐新闻是这个效果,觉得不错,就想着实现一下,以下就是我的实现过程,示例代码请看这儿→UIScrollView视觉差动画。...总效果 一、首先实现一个基本的图集浏览功能,如下图 该功能太基础,直接先贴一个UIScrollView,然后几个UIImageView啪啪啪往UIScrollView上面一扔.......Over,不在此啰嗦咯...尾尾相连,且滑动过程中,当前可见的图片有渐进的裁剪效果;前者就像是平铺在一起的一行书,一块儿左右平移,而后者就像是翻书时看到的效果,当前页left内容由边到内逐渐消失,而下一页right内容由边缘到里逐渐显示...首先创建一个承载UIImageView的容器WSLAnimationView,用于渐进动画裁剪效果。...之前相关文章: iOS 图片浏览的放大缩小 UIScrollerView当前显示3张图 UIPageViewController电子书翻页效果
withEvent: / touchesMoved: withEvent: / touchesEnded: withEvent: 等只能被UIView捕获(如有问题请指出对请指出,路过的大牛请勿喷),当我们创建 UIScrollView...或 UIImageView 时,当点击时UIScrollView 或 UIImageView 会截获touch事件,导致touchesBegan: withEvent:/touchesMoved: withEvent...解决办法:当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,然后几个UIImageView啪啪啪往UIScrollView上面一扔.......Over,...[普通的浏览效果.gif] 二、分析动画效果,提出解决方案 注意:这里的left和right是区分拖动中可见的两个视图。 1 ....尾尾相连,且滑动过程中,当前可见的图片有渐进的裁剪效果;前者就像是平铺在一起的一行书,一块儿左右平移,而后者就像是翻书时看到的效果,当前页left内容由边到内逐渐消失,而下一页right内容由边缘到里逐渐显示...首先创建一个承载UIImageView的容器WSLAnimationView,用于渐进动画裁剪效果。
UIView 是层级结构,UIView 只有一个父 View,但可以有多个子 View。...框内左边视图 textField.leftView = UIImageView(image: UIImage(systemName: "phone")) textField.leftViewMode =...contentOffset:UIScrollView 当前显示区域的顶点相对于内容左上角的偏移量(滚动到了什么位置)。...contentView里默认有 3 个控件:2 个UILabel、1一个UIImageView,并由此产生了四种不同的 UITableViewCell 的显示样式。...NSCollectionLayoutAnchor 在 Item 中,可能需要给其加上小红点或者未读消息数等附加视图,在 UICollectionViewCompositionalLayout 中,可以通过
使用ios SDK自带的 UIScrollView 可以实现对图片的缩放 现在给大家分享我的项目中可以直接使用的组件,需要引入 afnetworking等第三方框架 关于AFNetworking大家可以自行百度...,使用它的目的是下载网络图片(使用SDWebImage也可以) 使用scrollView实现图片的缩放,下面是一个可以直接使用的组件: 主要功能有: 显示网络图片,捏合放大或者缩小,单击关闭当前图片页面...@end // // ImageDetailCon.m // #import "ImageDetailCon.h" #import UIImageView...*scrollView; UIImageView *imageView; } @end @implementation ImageDetailCon...*)scrollView //委托方法,必须设置 delegate { return imageView;//要放大的视图 } -(void
效果预览.gif 主要部分:创建一个继承于UIScrollView的子类视图WSLPhotoZoom,这个视图需要一个展示图片的UIImageView,然后再结合UIScrollView自带的缩放手势的代理方法来达到缩放效果...;最后只需要把这个能缩放的视图放到需要展示图片的视图上就行了。...#pragma mark -- UIScrollViewDelegate //返回需要缩放的视图控件 缩放过程中 - (UIView *)viewForZoomingInScrollView:(UIScrollView...*)scrollView { return self.imageView; } //开始缩放 - (void)scrollViewWillBeginZooming:(UIScrollView...} 详情不再啰嗦,我相信很多人都懂,直接上 Github ,有需要的可以去看看 与此功能相关的文章可以查看我之前的文章: iOS 获取gif图片循环次数和时长 UIScrollerView当前显示
某些对象是用来管理内容显示如何绘制的,这些对象应该是管理如何平铺显示内容的子视图,以便于没有子视图可以超过屏幕的尺寸。就是当用户滚动时,这些对象应该恰当的增加或者移除子视图。 ...一个滚动视图也可以控制一个视图的缩放和平铺。当用户做捏合手势时,滚动视图调整偏移量和视图的比例。当手势结束的时候,管理视图内容显示的对象,就应该恰当的升级子视图的显示。...(3)如果150ms内touch未产生移动并且UIScrollView开始传递内部的view事件,但是移动足够远的话,且canCancelContentTouches = YES,UIScrollView...下面就需要在你创建的视图控制器中,创建一个重用的视图数组,用来把这些要显示的视图放入内存中,这里虽然界面上显示的是2排2列的四个视图,但是当拖动的时候,可能出现前面一排的视图显示一部分,末尾一排的视图显示一部分的情况...另外一个比较动态的选择是UIScrollView的另一个属性contentInset,contentInset增加你在contentsize中指定的内容能够滚动的上下左右区域数量contentInset.top
如果要在UIImageView中显示一个来自bundle的图片,你应保证图片的大小和UIImageView的大小相同。...在运行中缩放图片是很耗费资源的,特别是UIImageView嵌套在UIScrollView中的情况下。...如果图片是从远端服务加载的你不能控制图片大小,比如在下载前调整到合适大小的话,你可以在下载完成后,最好是用backgroundundefined thread,缩放一次,然后在UIImageView中使用缩放后的图片...在View释放后,1中的color不会跟着释放,而是一直存在内存中;2中的color会跟着释放掉,当然再次生成color时就会再次申请内存.在UIView上再添加一个UIImageView显示图片作为UIView...undefined iOS视图都是一个图层,最先放置的图层就会在最底层,如此最先给UIView添加一个UIImageView就可以作UIView的背景图片使用啦 。
} 二、初始化 UIScrollView 和 UIPageControl 为启动滑动图做准备 UIScrollView : 带有滑动效果,在上面加入UIImageView再设置代理后,可以实现翻页显示图片的效果...涉及的相关属性: contentSize : UIScrollView 显示的尺寸,这个按需求而设 pagingEnabled : 是否支持一页一页的翻,设置成YES后,每一次滑动,翻动一页; bounces...:[UIScreen mainScreen].bounds]; //设置UIScrollView 的显示内容的尺寸,有n张图要显示,就设置 屏幕宽度*n ,这里假设要显示4张图...上加入 UIImageView for (int i = 0 ; i < 4; i ++) { UIImageView *imageView = [[UIImageView...的代理方法 - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView 介绍: 顾名思义,这是一个滑动后减速结束的方法
今天的博客就介绍图片轮播的一种解决方案,下篇博客中在介绍另一种图片轮播的解决方案。...= 2; 15 16 //图片滚动的时间 17 imageViewDisplay.animationInterVale = 0.6; 18 19 //把该视图添加到相应的父视图上...1 #pragma -- mark 初始化ScrollView 2 - (void) initMainScrollView{ 3 4 _mainScrollView = [[UIScrollView...16 [self addSubview:_mainScrollView]; 17 } 4.添加PageControl 初始化PageControl, 配置相关属性,并添加到我们的自定义组件上...(UIScrollView *)scrollView{ 2 NSInteger currentPage = scrollView.contentOffset.x / _widthOfView;
为此当UIScrollView要和AutoLayout进行结合使用并实现滚动能力的话就不能直接将所有子视图都添加到UIScrollView中去, 而是需要中间建立一个容器视图,首先将容器视图添加到UIScrollView...如果不需要水平滚动则改为将容器视图的宽度等于UIScrollView视图的宽度。通过这样的设置后UIScrollView视图的contentSize将得到自动的计算。...就以上面的图片例子用MyLayout&TangramKit来实现来说,可以将S视图定义为一个垂直线性布局视图,而将A,B,C三个子视图添加到布局视图中即可。...2.UIScrollView的滚动 MyLayout&TangramKit对于处理和UIScrollView进行结合时进行特殊处理,当将一个布局视图添加到滚动视图时,布局系统内部会负责处理滚动视图的contentSize...因为MyLayout&TangramKit中的尺寸自适应约束不需要明确依赖某个子视图,因此当布局视图中的子视图有变化时系统会自动重新进行布局视图的尺寸计算,而当布局视图的尺寸变化时又会调整UIScrollView
我们通过一些简单的UIImageView和UIButton来重新开发这个动画,因为它们可以准确地得到动画的感觉,但在真实的地图中这会是一个真实的可伸缩的地图视图。...这个视图被添加为类的@property了,这样我们就可以在之后的代码中引用它。这里显示了如何声明一个@porperty。...最后,我们将UIImageView作为主屏幕的一个子视图添加进去。这是一个快速的模型,否则我会创建另一个UIViewController的子类来装载我们的UI代码。...我们会在主应用图片后立即添加它,因为我们想要最后添加图标按钮,这样它就会使z轴上最高的,也就是在其他视图的顶部。...一开始,这个视图会是完全透明的,所以alpha属性被设为0。有两个变换添加到视图中:第一个将视图往下移动30像素,第二个将其从正常尺寸拉伸到1.1倍。
领取专属 10元无门槛券
手把手带您无忧上云