大家好,今天给各位分享使用UIImageView打造图片轮播器教程的一些知识,其中也会对进行解释,文章篇幅可能偏长,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在就马上开始吧!
@interfaceInfinitudeView()
@property(非原子,弱)UIImageView *imgView; /** 图像容器*/
@property(非原子,分配)NSInteger索引; /** 图像索引*/
@property(非原子,分配)NSInteger imageCount; /** 图片数量*/
@property (非原子,强) NSTimer *timer; /** 定时器*/
@property(非原子,弱)UILabel *showCountLabel; /** 显示索引*/
@property(非原子,强)UISwipeGestureRecognizer *leftSwipeGesture; /** 向左滑动手势*/
@property(非原子,强)UISwipeGestureRecognizer *rightSwipeGesture; /** 右滑手势*/
@结束1。显示图像和图像索引
UIImageView *imgView=[[UIImageView alloc] initWithFrame:self.bounds];
imgView.contentMode=UIViewContentModeScaleAspectFit;
[自我添加Subview:imgView];
self.imgView=imgView;
UILabel *showCountLabel=[[UILabel alloc] init];
[自我addSubview:showCountLabel];
self.showCountLabel=showCountLabel;
showCountLabel.translatesAutoresizingMaskIntoConstraints=NO;
showCountLabel.font=[UIFont systemFontOfSize:15.0f];
[自我添加Constraints:@[
[NSLayoutConstraint约束WithItem:showCountLabel属性:NSLayoutAttributeRight相关By:NSLayoutRelationEqual toItem:self属性:NSLayoutAttributeRight乘数:1.0f常量:-20],
[NSLayoutConstraint约束WithItem:showCountLabel属性:NSLayoutAttributeBottom相关By:NSLayoutRelationEqual toItem:self属性:NSLayoutAttributeBottom乘数:1.0f常量:-20]]
];2。将图像数组添加到.h 文件中以进行数据传输。
@interface InfinititudeView : UIView
@property(非原子,强)NSArray *imageArray; /** 图像数组*/
@end3。重写imageArray的setter方法,传入图片时设置。
/**
* 根据图片数组设置图片
*
* @param imageArray 图像数组
*/
- (void)setImageArray:(NSArray *)imageArray {
_imageArray=imageArray;
_imageCount=imageArray.count;
_索引=0;
[自行设置图像];
}4.数组可以传入图片,也可以传入图片的链接字符串,所以需要做出判断。为了更方便地加载网络图片,可以直接使用第三方SDWebImage。
/**
* 设置图片
*/
- (void)setImage {
//显示图像索引
[自我设置显示计数标签文本];
id 对象=[_imageArrayfirstObject];
//如果传入图片,则直接显示图片。如果是图像链接,网络将加载它。
if ([对象isKindOfClass:[UIImage 类]]) {
_imgView.image=_imageArray[_index];
} else if ([object isKindOfClass:[NSMutableString class]]) {
[_imgView sd_setImageWithURL:[NSURL URLWithString:_imageArray[_index]]];
}
}5.索引设置
/**
* 显示索引
*/
- (void)setShowCountLabelText {
NSMutableAttributedString *attributedString=[[NSMutableAttributedString alloc] init];
NSAttributedString *str1=[[NSAttributedString alloc] initWithString:[NSString stringWithFormat:@"%zd", _index + 1] 属性:@{NSForegroundColorAttributeName : [UIColor colorWithRed:0.915 绿色:0.685 蓝色:0.574 alpha:1.000]}];
NSAttributedString *str2=[[NSAttributedString alloc] initWithString:[NSString stringWithFormat:@"/%zd", _imageCount] attribute:@{NSForegroundColorAttributeName : [UIColor whiteColor]}];
[attributedStringappendAttributedString:str1];
[attributedStringappendAttributedString:str2];
_showCountLabel.attributedText=attributeString;
} 至此,运行效果
1.png
6.添加手势
/**
* 添加手势
*/
- (void)addGuesture {
//1.添加左滑手势
_leftSwipeGesture=[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(gestureMethod:)];
_leftSwipeGesture.direction=UISwipeGestureRecognizerDirectionLeft;
[自我addGestureRecognizer:_leftSwipeGesture];
//2.添加右滑手势
_rightSwipeGesture=[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(gestureMethod:)];
_rightSwipeGesture.direction=UISwipeGestureRecognizerDirectionRight;
[自我添加GestureRecognizer:_rightSwipeGesture];
}7.手持响应方法
/**
* 手势响应方式
*
* @param swipeGesture 响应手势
*/
- (void)gestureMethod:(UISwipeGestureRecognizer *)swipeGesture {
开关(swipeGesture.direction){
案例UISwipeGestureRecognizerDirectionLeft:
_索引++;
[自我设置ImageWithIndex:_index];
[自我动画TransitionWithSwipeGestureRecognizerDirection:swipeGesture.direction];
休息;
案例UISwipeGestureRecognizerDirectionRight:
_指数- ;
[自我设置ImageWithIndex:_index];
[自我动画TransitionWithSwipeGestureRecognizerDirection:swipeGesture.direction];
休息;
默认:break;
}
}8.基于滑动设置图片
/**
* 根据手势设置图片
*/
- (void)setImageWithIndex:(NSInteger)index {
如果(索引_imageCount - 1){
_索引=0;
} else if (索引0) {
_index=_imageCount - 1;
}
[自行设置图像];
}9.设置过渡动画
/**
* 添加过渡动画
*
* @param Direction 手势方向
*/
- (void)animationTransitionWithSwipeGestureRecognizerDirection:(UISwipeGestureRecognizerDirection)方向{
CATransition *transition=[CATransition 动画];
过渡持续时间=0.5f;
//设置动画风格
转换类型=kCATransitionPush;
如果(方向==UISwipeGestureRecognizerDirectionRight){
过渡.subtype=@"fromLeft";
} 别的{
过渡.subtype=@"fromRight";
}
[_imgView.layer addAnimation:transition forKey:nil];
}跑步
2.gif9.下一步是在图像传入时添加计时器。
/**
* 根据图片数组设置图片
*
* @param imageArray 图像数组
*/
- (void)setImageArray:(NSArray *)imageArray {
_imageArray=imageArray;
_imageCount=imageArray.count;
_索引=0;
_timer=[NSTimerchedTimerWithTimeInterval:3.0f target:self选择器:@selector(timerMethod)userInfo:nil重复:YES];
[自行设置图像];
}
/**
* 定时器响应方法
*/
- (void)定时器方法{
_索引++;
[自我设置ImageWithIndex:_index];
[自身animationTransitionWithSwipeGestureRecognizerDirection:_leftSwipeGesture.direction];
}滑动时需要关闭定时器
/**
* 手势响应方式
*
* @param swipeGesture 响应手势
*/
- (void)gestureMethod:(UISwipeGestureRecognizer *)swipeGesture {
[_计时器无效];
开关(swipeGesture.direction){
案例UISwipeGestureRecognizerDirectionLeft:
_索引++;
[自我设置ImageWithIndex:_index];
[自我动画TransitionWithSwipeGestureRecognizerDirection:swipeGesture.direction];
休息;
案例UISwipeGestureRecognizerDirectionRight:
_指数- ;
[自我设置ImageWithIndex:_index];
[自我动画TransitionWithSwipeGestureRecognizerDirection:swipeGesture.direction];
休息;
默认:break;
}
_timer=[NSTimerchedTimerWithTimeInterval:3.0f target:self选择器:@selector(timerMethod)userInfo:nil重复:YES];
} 我们看一下整体效果
【使用UIImageView打造图片轮播器教程】相关文章:
2.米颠拜石
3.王羲之临池学书
8.郑板桥轶事十则
用户评论
想学习一下怎么用 UIImageView 实现轮播效果!
有14位网友表示赞同!
iOS 开发中轮播图挺常用的吧,这个帖子刚好能解决我的需求。
有5位网友表示赞同!
之前做项目的时候也遇到过类似的问题,期待看到文章里能提供解决步骤!
有20位网友表示赞同!
图片轮播器做的好看很有必要的,可以提升用户体验。
有14位网友表示赞同!
用 UIImageView 实现轮播器应该会比用第三方库更灵活吧?
有18位网友表示赞同!
分享一下你的项目中如何应用图片轮播器的场景和效果~
有5位网友表示赞同!
文章标题很吸引人,我正在需要这个知识点!
有14位网友表示赞同!
学习新技术总是让人兴奋,期待这个教程!
有14位网友表示赞同!
希望能够详细讲解代码实现步骤,方便我们理解。
有15位网友表示赞同!
UIImageView 实现轮播器应该是入门难度比较低的项目吧?
有16位网友表示赞同!
能不能分享一下代码注释的使用方法,更容易理解代码逻辑。
有18位网友表示赞同!
图片轮播效果有很多种,这篇文章会介绍哪种类型呢?
有12位网友表示赞同!
做图片轮播器的时候图片的加载速度要考虑好,不然影响用户体验。
有17位网友表示赞同!
希望文章能涵盖一些常见的问题和解决方案,比如图片错位等情况。
有20位网友表示赞同!
学习了这个实现方法之后,可以尝试自定义图片轮播器的UI设计吧?
有14位网友表示赞同!
做个精美实用的图片轮播器需要哪些关键技术点?
有10位网友表示赞同!
这个教程适合什么水平的 iOS 开发者?我算是新手入门应该能看懂吗?
有7位网友表示赞同!
能不能分享一下用其他框架实现轮播器的学习资源?
有5位网友表示赞同!
期待看到作者分享更多 iOS 开发经验!
有6位网友表示赞同!
图片轮播器是一个很有用的工具,希望这个教程能够帮助到大家!
有12位网友表示赞同!