IOS 导航页UIScrollView+UIPageControl
2016-02-16 14:47
453 查看
#import <UIKit/UIKit.h> @class ViewController; @interface AppDelegate : UIResponder <UIApplicationDelegate, UIScrollViewDelegate> { CGSize size; float pageOriginX; } @property (strong, nonatomic) UIWindow *window; @property (strong, nonatomic) ViewController *viewController; @property (strong, nonatomic) UIScrollView *scrollView; @property (strong, nonatomic) UIPageControl *pageControl; @end
#import "AppDelegate.h"
#import "ViewController.h"
@interface AppDelegate ()
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.backgroundColor = [UIColor colorWithWhite:237/255.0 alpha:1];
self.window.clipsToBounds = YES;
self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
UINavigationController *naviController = [[UINavigationController alloc] initWithRootViewController:self.viewController];
naviController.navigationBarHidden = YES;
self.window.rootViewController = naviController;
[self.window makeKeyAndVisible];
float lastVersion = [[[NSUserDefaults standardUserDefaults] objectForKey:@"VersionNum"] floatValue];
float obj = [[[[NSBundle mainBundle] infoDictionary]objectForKey:@"CFBundleShortVersionString"] floatValue];
if (lastVersion != obj)
[self addScrollView];
return YES;
}
- (void)applicationWillResignActive:(UIApplication *)application {
// Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
// Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
}
- (void)applicationDidEnterBackground:(UIApplication *)application {
// Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
// If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
}
- (void)applicationWillEnterForeground:(UIApplication *)application {
// Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
}
- (void)applicationDidBecomeActive:(UIApplication *)application {
// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
}
- (void)applicationWillTerminate:(UIApplication *)application {
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
}
- (void)addScrollView
{
size = [[UIScreen mainScreen] bounds].size;
self.scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 20, size.width, size.height)];
self.scrollView.backgroundColor = [UIColor colorWithWhite:0 alpha:1];
self.scrollView.pagingEnabled = YES;
self.scrollView.bounces = YES;
self.scrollView.scrollEnabled = YES;
self.scrollView.delegate = self;
NSString *imgName = @"R3";
for (int i=0; i<3; i++)
{
UIImageView *imv = [[UIImageView alloc] initWithFrame:CGRectMake(i*size.width, 0, size.width, size.height)];
imv.image = [UIImage imageNamed:[NSString stringWithFormat:@"%@_%d.jpg",imgName,i]];
[self.scrollView addSubview:imv];
}
[self.scrollView setContentSize:CGSizeMake(4*size.width, size.height)];
[self.window addSubview:self.scrollView];
self.pageControl = [[UIPageControl alloc] init];
self.pageControl.center = CGPointMake(size.width * 0.5, size.height * 0.98);
self.pageControl.backgroundColor = [UIColor grayColor];
[self.window addSubview:self.pageControl];
self.pageControl.numberOfPages = 3;
self.pageControl.currentPage = 0;
pageOriginX = self.pageControl.frame.origin.x;
NSObject *obj = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
[[NSUserDefaults standardUserDefaults] setObject:obj forKey:@"VersionNum"];
}
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
static BOOL isRemove = NO;
if (scrollView.contentOffset.x>2*size.width) {
float alpha = 1-(scrollView.contentOffset.x-2*size.width)/size.width;
scrollView.backgroundColor = [UIColor colorWithWhite:0 alpha:alpha];
float b = scrollView.contentOffset.x-2*size.width;
self.pageControl.frame = CGRectMake(pageOriginX - b, self.pageControl.frame.origin.y, self.pageControl.frame.size.width, self.pageControl.frame.size.height);
if (scrollView.contentOffset.x>2.9*size.width && !isRemove)
{
[self performSelector:@selector(removeGuideView:) withObject:scrollView afterDelay:.4];
isRemove = YES;
}
}
else
{
int index = fabs(scrollView.contentOffset.x)/scrollView.frame.size.width;
self.pageControl.currentPage = index;
}
}
- (void)removeGuideView:(UIScrollView *)sc
{
[sc removeFromSuperview];
[self.pageControl removeFromSuperview];
}
@end
相关文章推荐
- iOS开发中使用UIScrollView实现图片轮播和点击加载
- 顶部可滚动小广告位 的封装 (UIScrollView+PageControl)
- ios7 中关于导航切换影响UIScrollView的问题
- 两个UIScrollVIew能够同步滚动
- UIScrollview要加载大量数据的时候,考虑到内存的消耗问题,我们不可能全部加载完。
- UIScrollview 无缝循环滚动实现
- 解决 IOS的UIScrollView的自动布局
- UIScrollView无法滚动的问题
- cocos2d-x 一些有用的函数
- IOS UIscrollView 控件
- 关于NGUI中UITexture贴图自定义的shader文件在UISrollView中不报错的解决方案
- 缩放图片
- UIScrollView缩放
- UIScrollView的属性总结
- UIScrollView常用属性及回调方法
- IOS-UIScrollView滚动图片的简单实现
- UIScrollView的使用大全--contentsize,contentInset和contentInset
- 使用UINavigationController后导致UIScollView尺寸变化(转)
- UIScrollView里面实现视图的移动缩放,点击事件
- iOS广告轮播视图