基础层scrollview展示图片

关于图片解压缩,导致scrollView滚动卡顿 共同学习 阅读详情

图片轮播底层scrollView.zip

相关代码

.h

#import <UIKit/UIKit.h>

// 多张图片滑动相关
@protocol ImagesScrollViewDelegate <NSObject>

// 点击图片的代理
- (void)imagesScrollViewDidClickImageAtPage:(NSInteger)page;

// 停止滚动代理
- (void)imagesScrollViewDidEndScrollAtPage:(NSInteger)page;

@end

@interface ImagesScrollView : UIView

#pragma mark 基础的东西

/**
 * 自身代理
 */
@property (nonatomic,assign) id<ImagesScrollViewDelegate,NSObject> delegate;


/**
 * 传入的图片数组
 */
- (void)inputImages:(NSMutableArray *)images atIndex:(NSInteger)index andComplete:(void(^)(BOOL complete))complete;


/**
 * 传入图片url数组
 */
- (void)inputImageUrlArray:(NSMutableArray *)imageUrlArray atIndex:(NSInteger)index andComplete:(void(^)(BOOL complete))complete;



@end

.m文件

#import "ImagesScrollView.h"

@interface ImagesScrollView ()<UIScrollViewDelegate>

@property (retain,nonatomic) UIScrollView *scrollView;
@property (nonatomic,assign) NSInteger currentPage; // 滚动的当前页面

@end

@implementation ImagesScrollView

#pragma mark 传入图片,将图片放入scrollView中
- (void)inputImages:(NSMutableArray *)images atIndex:(NSInteger)index andComplete:(void(^)(BOOL complete))complete {



    // 1. 移除scrollView中所有的子视图
    for (UIView *view in self.scrollView.subviews) {
        [view removeFromSuperview];
    }

    self.scrollView.contentSize = CGSizeMake(images.count*GETWIDTH(self.scrollView), GETHEIGHT(self.scrollView));

    // 2. 添加子视图
    for (int i = 0; i < images.count; i ++) {

        UIImageView *imageView = [[UIImageView alloc] init];

        imageView.contentMode = UIViewContentModeScaleAspectFit;
        CGFloat imageX = i*GETWIDTH(self.scrollView);
        imageView.frame = CGRectMake(imageX, 0, GETWIDTH(self.scrollView), GETHEIGHT(self.scrollView));
        imageView.image = [images objectAtIndex:i];
        imageView.userInteractionEnabled = YES;

        //1、创建手势实例,并连接方法handleTapGesture,点击手势
        UITapGestureRecognizer *tapGesture=[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(handleTapGesture:)];
        //设置手势点击数,双击:点2下
        tapGesture.numberOfTapsRequired=1;
        // imageView添加手势识别
        [imageView addGestureRecognizer:tapGesture];

        //        隐藏指示条
        self.scrollView.showsHorizontalScrollIndicator = NO;
        [self.scrollView addSubview:imageView];
    }

    [self.scrollView setContentOffset:CGPointMake(index*GETWIDTH(self.scrollView), 0) animated:NO];

    complete(YES);
}

#pragma mark 处理传过来的链接
- (void)inputImageUrlArray:(NSMutableArray *)imageUrlArray atIndex:(NSInteger)index andComplete:(void(^)(BOOL complete))complete {

    // 1. 移除scrollView中所有的子视图
    for (UIView *view in self.scrollView.subviews) {
        [view removeFromSuperview];
    }

    self.scrollView.contentSize = CGSizeMake(imageUrlArray.count*GETWIDTH(self.scrollView), GETHEIGHT(self.scrollView));

    // 2. 添加子视图
    for (int i = 0; i < imageUrlArray.count; i ++) {

        UIImageView *imageView = [[UIImageView alloc] init];

        imageView.contentMode = UIViewContentModeScaleAspectFit;
        CGFloat imageX = i*GETWIDTH(self.scrollView);
        imageView.frame = CGRectMake(imageX, 0, GETWIDTH(self.scrollView), GETHEIGHT(self.scrollView));

        [imageView sd_setImageWithURL:[imageUrlArray objectAtIndex:i] placeholderImage:[UIImage imageNamed:@"placeholderIm"]];
        imageView.userInteractionEnabled = YES; // 图片可交互

        //1、创建手势实例,并连接方法handleTapGesture,点击手势
        UITapGestureRecognizer *tapGesture=[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(handleTapGesture:)];
        //设置手势点击数,双击:点2下
        tapGesture.numberOfTapsRequired=1;
        // imageView添加手势识别
        [imageView addGestureRecognizer:tapGesture];

        //        隐藏指示条
        self.scrollView.showsHorizontalScrollIndicator = NO;
        [self.scrollView addSubview:imageView];
    }

    [self.scrollView setContentOffset:CGPointMake(index*GETWIDTH(self.scrollView), 0) animated:NO];

    complete(YES);
}

#pragma mark 返回滑动页数
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {

    CGFloat scrollViewW = scrollView.frame.size.width;
    CGFloat x = scrollView.contentOffset.x;
    NSInteger page = (x + scrollViewW / 2) / scrollViewW;
    self.currentPage = page;

    if (_delegate && [_delegate respondsToSelector:@selector(imagesScrollViewDidEndScrollAtPage:)]) {
        [_delegate imagesScrollViewDidEndScrollAtPage:page];
    }
}

#pragma mark 图片的点击手势
#pragma mark 点击手势触发事件
- (void)handleTapGesture:(UITapGestureRecognizer *)sender {

    if (_delegate && [_delegate respondsToSelector:@selector(imagesScrollViewDidClickImageAtPage:)]) {
        [_delegate imagesScrollViewDidClickImageAtPage:self.currentPage];
    }
}

#pragma mark 懒加载scrollView
- (UIScrollView *)scrollView {
    if (!_scrollView) {
        _scrollView = [[UIScrollView alloc] initWithFrame:self.frame];
        self.scrollView.pagingEnabled = YES;
        self.scrollView.delegate = self;
        self.scrollView.backgroundColor = [UIColor blackColor];
        [self addSubview:_scrollView];
    }
    return _scrollView;
}


@end
HorizontalScrollView布局方式图片水平滑动 立即下载

相关推荐

使用Scroll View显示一个文件夹的缩略图,类似图片浏览器

Scroll View 控件显示一个文件夹的缩略图,类似图片浏览器

DOM解析和JSON解析简单操作

DOM解析:首先根据数据形成一个dom树 代码演示 // 1.获取文件路径 NSString *path = [[NSBundle mainBundle] pathForResource:@"contacts" ofType:@"xml"]; // 2.根据文件路径,将文件内容读取成NSData对象 NSData *data = [NSData dataW...

公会驻地 1809

scrollView滑动,实现使用3张图片浏览全部的图片,对scrollView的优化

scrollView滑动,实现使用3张图片浏览全部的图片,对scrollView的优化,但是不能对图片进行缩放,想了很久都没做做到我想要的结果,所以直接把缩放的代码删除了,能实现的大神,还请赐教

私有api处理

相关命令 cd 相关文件夹 grep -r ASIdentifierManager . 一定不要忘记 . Last login: Wed Jun 6 11:26:06 on ttys004 AnchoriteFili:~ zetafin$ cd /Users/zetafin/lld-app-ios AnchoriteFili:lld-app-ios zetafi...

公会驻地 471

基本图像处理的底层代码

本文档是关于基本图像处理的底层代码总结,希望对大家有用

IO多路转接 ——— select、poll、epoll

select是系统提供的一个多路转接接口。select函数的函数原型如下: 参数说明:参数timeout的取值:返回值说明:select调用失败时,错误码可能被设置为:fd_set结构与sigset_t结构类似,fd_set本质也是一个位图,用位图中对应的位来表示要监视的文件描述符。 调用select函数之前就需要用fd_set结构定义出对应的文件描述符集,然后将需要监视的文件描述符添加到文件描述符集当中,这个添加的过程本质就是在进行位操作,但是这个位操作不需要用户自己进行,系统提供了一组专门的接口,用

2021dragon的博客 7974

打开相机手电筒/添加拍照声音

#pragma -mark- 打开手电筒 -(void)openFlashlight { AVCaptureDevice * device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]; if (device.torchMode == AVCaptureTorchModeOff) { ...

公会驻地 581

Figure 03人形机器人与Helix端到端控制系统:具身智能突破深度解析

2026年5月,Figure AI的Figure 03人形机器人在一场震撼业界的直播中完成了长达200小时的连续全自动作业,分拣近25万个包裹,零故障。这一里程碑式的成就标志着人形机器人正式从「实验室展示」迈入「规模化商用」阶段。本文深入剖析Figure 03的核心技术——Helix端到端神经网络控制系统,包括System 0/1/2三层架构、视觉运动策略、全身协同控制等关键技术,并提供完整的Python/Go代码示例,帮助开发者理解具身智能的核心原理与实现路径。关键词。

shao.bing的专栏 991

iOS10 新特性

相关引用 iOS开发|适配iOS10以及Xcode8 iOS 10 的适配问题(来源) 1. 系统判断方法可使用 if #available(iOS 10.0, *) { // 代码块 } else { // 代码块 } 2. 隐私数据访问问题 info.plist文件中需要加入权限相关 &lt;!-- 相册 --&gt;...

公会驻地 444

【无标题】EXCEL实现刷题

运用Excel开发的刷题工具,具有普遍实用性,可将WORD的试题自动导入并实现刷题。

weixin_44081794的博客 2971

CST实战:变容二极管电容曲线提取全流程(附S参数设置技巧)

本文详细介绍了在CST Studio Suite中提取变容二极管电容-电压(C-V)曲线的完整实战流程。重点解析了S参数仿真的核心原理、DCFEED模块的正确配置、参数扫描的设置技巧,并探讨了集成SPICE模型进行精确仿真的方法,帮助射频工程师高效、准确地获取器件关键特性。

weixin_29237635的博客 529

重力感应_图片旋转

相关链接 iOS实时获取当前的屏幕方向之重力感应 图片重力转向工具.zip 代码相关 * 点击拍照按钮的一瞬间获取当前的重力方向,获取一次方向直接关掉定时器,不然手机会发热 #import &lt;CoreMotion/CoreMotion.h&gt; // 导入头 @property (nonatomic,strong) CMMotionManager *mMana...

公会驻地 789

最大面积验证码通用解法

最大面积验证码、面积验证通用解法

九月镇灵将的博客 1043

ScrollView展示滚动图片

1. 滚动视图效果: 2. 代码实现: (1)AVD模拟器内存配置: 根据图片资源的大小,调整合适的内存空间,本程序的参数调整如下: (2)工程目录结构: (3)MainActivity.java代码: package com.example.scrollview; import android.app.Activity; import andr...

.... 1200

某瓜数据app 获取达人直播商品信息接口 Sign

某瓜数据app 获取达人直播商品列表接口 Sign

自成背后的博客 6039

MATLAB计算干旱指标:SPI、SRI、SWAP、DWAAI、EDI等

简介各种干旱指数以及其MATLAB代码实现

WW、forever的博客 2万+

在scrollview里面显示imageview (一张超大图片), scrollview的上下显示多余的空白

这是项目中遇到的问题: 在scrollview里面显示imageview (一张超大图片), scrollview的上下会显示空白(或者说,显示多余的空白,你需要向下拖动一会儿才能看到imageView的内容), 这个问题,仅出现在 density为120(resolutio

WOSHICAIXIANFENG的专栏 8889

国产上位机软件突围:适配统信UOS/麒麟OS的跨平台开发技术与实践(2026年信创实战指南)

(航天科技集团CTO):“在信创战场上,1ms的延迟意味着1个卫星的控制失效。2026年,C#/.NET MAUI不是选择,而是我们守护卫星的‘生命线’。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 408

android scrollview内实现图片的手势缩放

图片是一张长图,在scrollview内上下滑动图片的同时,增加了对图片的手势放大或缩小的操作。   之前将手势缩放的布局放在scrollview内总是会发生手势冲突,这个不会,可以找张图片试试。   主界面的activity:   package test; import com.agehua.drag.R; import android.app.Activity; ...

agehua 1169

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

在ScrollView中显示一个长图,图片的适配拉伸方法

有时候我们需要加载一个长图放到ScrollView中,但是在ImageView中不论那种ScaleType都不能合适的展示图片,需要手动适配一下,做法很简单,留着以后用到的时候找出来直接用就好了 ImageView android:id="@+id/imageView_pic" android:layout_width="match_parent" and

Just a wood 3484

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

自定义控件之重写ScrollView实现图片下拉放大

前言因为公司项目要实现一个效果,在ScrollView没有向下滚动时,下拉(未重写前下拉是没有任何效果的)放大顶部的图片,当时去网上找了,记得以前见过很多这样的控件的,现在却找半天也很难找到一个,好不容易找到了2个,发现效果都和需求上面的效果有偏差,最后没有办法只能是自己写了,花费了半天时间研究出来了,同时为了记录实现思路,所以就有了此文章效果实现思路拦截ScrollView的触摸滑动事件(ACTI

wantnrun的专栏 1080

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

ScrollView双击图片定点放大

直接先说原理吧--原理:利用了scrollview的回调函数(如下)以及scrollview自己内部的一些缩放规则(其实我也还没弄清楚具体scrollview干了什么事),只是知道了它可以怎么做-_-# - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView { returnself.zoomIma...

weixin_30405421的博客 185

android 图片垂直方向( ScrollView) ,水平方向HorizontalScrollView 滚动

在界面上水平和竖直方向来滑动图片 ()

yy140625的专栏 2045

Android 自定义可缩放图片的ScrollView

前言 通过用下拉,实现对图片进行放大 在项目中使用起来也比较方便 <?xml version="1.0" encoding="utf-8"?> <com.mycompany.myapp.ZoomScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_h...

饮料 577

lua 根据图片高度设置scrollview高度

一个Scrollview 要展示两张不同长度的图片,写两个固定长度的Scrollview未免太浪费,就看了一下源码,找到了一个可以设置Scrollview滚动区域的方法。setInnerContainerSize(cc.size()) 下边是我自己封装的方法,传scrollview 和一个图片变量名进去function KaengRuleLayer:changeScrollviewHight(...

Eric_gg的博客 1158

iOS开发项目实战——Swift实现ScrollView滚动条功能

手机作为一个小屏设备,需要显示的信息往往无法在一个屏幕上显示,此时就需要使用到滚动条,当然除了像TableView这样可以自带滚动功能的。如果一个界面上View较多,那就必须要使用到ScrollView了。现在我们将会使用Swift在iOS上实现滚动效果。具体实现如下: (1)创建一个新的iOS项目,语言选择Swift,并在Main.storyboard中拖入一个ScrollView控件。然后在

乞力马扎罗的雪CYF的博客 8445
上一篇: 重力感应_图片旋转
下一篇: 定制相机相册
瓦怕落地
博客等级 码龄11年 16粉丝 118原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值