`
jsntghf
  • 浏览: 2533992 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

UIScrollView的简单例子

    博客分类:
  • iOS
阅读更多

MyScrollView.h

 

#import <UIKit/UIKit.h>

@interface MyScrollView : UIScrollView <UIScrollViewDelegate> {
	UIImage *image;
	UIImageView *imageView;
}

@property (nonatomic, retain) UIImage *image;

@end

 

MyScrollView.m

 

#import "MyScrollView.h"

@implementation MyScrollView

@synthesize image;

- (id)initWithFrame:(CGRect)frame {
    if ((self = [super initWithFrame:frame])) {
		self.delegate = self;
		self.minimumZoomScale = 0.5;
		self.maximumZoomScale = 2.5;
		self.showsVerticalScrollIndicator = NO;
		self.showsHorizontalScrollIndicator = NO;
		
		imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
		imageView.contentMode = UIViewContentModeCenter;
		[self addSubview:imageView];
    }
    return self;
}

- (void)setImage:(UIImage *)img {
	imageView.image = img;
}

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {	
	return imageView;
}

- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale {
    CGFloat zs = scrollView.zoomScale;
	zs = MAX(zs, 1.0);
	zs = MIN(zs, 2.0);	
	
	[UIView beginAnimations:nil context:NULL];
	[UIView setAnimationDuration:0.3];		
	scrollView.zoomScale = zs;	
	[UIView commitAnimations];
}

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
	UITouch *touch = [touches anyObject];
	
	if ([touch tapCount] == 2) {
		CGFloat zs = self.zoomScale;
		zs = (zs == 1.0) ? 2.0 : 1.0;
		
		[UIView beginAnimations:nil context:NULL];
		[UIView setAnimationDuration:0.3];			
		self.zoomScale = zs;	
		[UIView commitAnimations];
	}
}

- (void)dealloc {
	[image release];
	[imageView release];
	
    [super dealloc];
}

@end

 

MainViewController.h

 

#import "MyScrollView.h"

@interface MainViewController : UIViewController <UIScrollViewDelegate> {
	IBOutlet UIScrollView *scrView;
	
	NSInteger lastPage;
}

@end

 

MainViewController.m

 

#import "MainViewController.h"

@implementation MainViewController

- (void)viewDidLoad {
	[super viewDidLoad];
	
	self.view.backgroundColor = [UIColor blackColor];
	
	scrView.contentSize = CGSizeMake(1700, 480);
	scrView.showsHorizontalScrollIndicator = NO;
	
	for (int i = 0; i < 5; i++) {
		MyScrollView *ascrView = [[MyScrollView alloc] initWithFrame:CGRectMake(340 * i, 0, 320, 480)];
		NSString *imgPath = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%d", i + 1] ofType:@"jpg"];
		ascrView.image = [UIImage imageWithContentsOfFile:imgPath];
		ascrView.tag = 100 + i;
		
		[scrView addSubview:ascrView];
		[ascrView release];
	}
	
	lastPage = 0;
}

//划动的动画结束后调用
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
	CGFloat pageWidth = scrollView.frame.size.width;
	NSInteger page = floor((scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1;
    
	if (lastPage != page) {
		MyScrollView *aView = (MyScrollView *)[scrView viewWithTag:100 + lastPage];
		aView.zoomScale = 1.0;
		
		lastPage = page;
	}
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
}

- (void)viewDidUnload {
	scrView = nil;
}

- (void)dealloc {
	[scrView release];
    [super dealloc];
}

@end
分享到:
评论

相关推荐

    UIScrollView简单实例

    【UIScrollView简单实例】是一个针对初学者的Objective-C编程教程,主要涵盖了如何在iOS应用中实现一个基本的滚动视图功能。这个实例通过使用UIScrollView和UIPageControl,为用户提供了直观的页面滑动体验。 首先...

    iOS利用UIScrollView实现无限滚动效果

    1. 准备所需图片:在这个例子中,我们准备了五张图片(img_01 到 img_05),并按照上述原则构建了一个包含七张图片的数组。数组中的图片顺序为 img_05, img_01, img_02, img_03, img_04, img_05, img_01。 2. 创建...

    ScrollView And PageControl简单例子

    在描述中提到使用GCD(Grand Central Dispatch)来实现这个例子。GCD是Apple的多线程解决方案,它可以让你在后台执行耗时操作,以提高应用程序的响应速度。在这个场景下,GCD可能被用来异步加载ScrollView中的内容,...

    界面滑动的小例子,简单易懂

    这个“界面滑动的小例子”旨在提供一个简单的教程,帮助开发者理解和实现这样的功能。我们将探讨如何通过编程实现界面滑动,以及在实际项目中如何应用。 滑动通常涉及滚动视图,例如ScrollView、...

    swift-一个SwiftPropertyWrapper集合

    例如,一个简单的`@LoggedProperty`,记录每次属性改变: ```swift @propertyWrapper struct LoggedProperty&lt;Value&gt; { private var log: [Value] = [] private var wrappedValue: Value init(wrappedValue: ...

    ios swift 常用组件使用例子

    以上就是`ios swift 常用组件使用例子`的详细解析,涵盖了`UIWebView`、`Maps`、`ScreenRecording`、`UIScrollView` 和 `VideoPlayer` 的基本使用方法。在实际开发中,这些组件的使用会更复杂,需要结合具体需求进行...

    HPParallaxHeader:UIScrollView的简单视差标头

    例子 要运行示例项目,请克隆存储库,然后首先从Example目录运行pod install 。 要求 安装 可通过获得 。 要安装它,只需将以下行添加到您的Podfile中: pod 'HPParallaxHeader' 作者 , 执照 HPParallaxHeader在...

    实现左右滑动屏幕功能切换栏目

    在iOS应用开发中,实现左右滑动屏幕功能切换栏目是一种常见的交互设计,它能提供流畅的用户体验,使得用户可以通过简单的手势在不同的内容区域之间切换。这个功能通常通过使用UIScrollView及其子视图来实现。在本...

    autolayout 所有例子

    这个压缩包“autolayout 所有例子”包含了一系列关于AutoLayout的实际应用示例,涵盖了多种实现方式,包括使用XIB、代码以及UIScrollView、UITableView和动画的集成。下面将详细阐述这些知识点: 1. **AutoLayout ...

    ios pagecontrol例子

    ios pagecontrol例子,iphone6.1测试通过。简单翻页框架,用UIscrollView加载内容页,施行页数控制。具体说明和截图参照:http://blog.csdn.net/donny_zhang

    使用UIPageControl的小例子

    默认情况下,UIPageControl是一个简单的点状指示器,但在这个例子中,开发者通过添加自定义背景和使用CATransition动画,使其更具视觉吸引力。 首先,我们需要理解Objective-C中的CATransition类。它是Core ...

    ios中tableview下拉更新效果例子

    `UIRefreshControl`是一个内置的下拉刷新控件,它提供了一个简单的动画效果,当用户在顶部拉动表格时显示,并在数据加载完成后自动隐藏。 以下是一些实现步骤: 1. **添加UIRefreshControl**:在`UITableView`的...

    多页面略缩图滚动.zipIOS应用例子源码下载

    同时,集成手势识别(如PanGesture或SwipeGesture)可以使用户通过简单的触摸动作来滚动缩略图。 6. **数据模型和绑定**:源码可能包含了如何将页面数据与视图绑定的方法,这通常涉及到代理方法、KVO(Key-Value ...

    ios苹果app开发入门object-c例子demo14个实例

    6. **WorldFacts**:这个名字暗示了这个例子可能涉及到网络请求和数据展示,可能使用了NSURLConnection或NSURLSession来获取全球事实数据,并在界面上展示。 7. **SyncMe**:此实例可能关于数据同步,可能是本地...

    IOS应用源码之自动滚动demo .rar

    在自动滚动demo中,开发者可能已经创建了一个简单的例子,演示了如何配置和使用UIScrollView。 1. **UIScrollView基础**:UIScrollView是一个可滚动的内容容器,它可以显示比其实际大小更大的内容。通过设置content...

    ios-segment,scrollview.zip

    在这个例子中,我们为Segmented Control添加了一个目标动作,当用户选择不同的段时,会调用`segmentedControlValueChanged`方法。根据所选的段索引,我们切换到相应的ScrollView并使其可用。此外,你还可以在此方法...

    多种view视图切换效果.zipIOS应用例子源码下载

    通过拖拽和配置UIStoryboardSegue,可以实现简单的模态或推入视图切换。 - **pushViewController:animated:** 这是UINavigationController的一个方法,用于将新的UIViewController推入栈顶,从而在导航栏上显示新视...

    右边伸出的bar导航.zipIOS应用例子源码下载

    它能自动调整子视图的排列和间距,使得布局工作更为简单。 6. **Swift或Objective-C编程**:此源码可能是用Swift或Objective-C编写的,这两种语言都是iOS开发的官方语言。学习者可以通过阅读源码了解如何在这些语言...

    ScrollViewDemo

    ScrollViewDemo通过大图展示的例子,帮助开发者学习如何创建自定义的滚动视图,以及如何利用手势来控制视图的移动和缩放,这些都是iOS开发中非常实用的技能。通过深入理解并实践这些知识点,开发者可以创建出更加...

Global site tag (gtag.js) - Google Analytics