iOS 는 UIScrollView 를 사용 하여 무한 순환 라운드 맵 효 과 를 실현 합 니 다.

본 논문 의 사례 는 iOS 가 UIScrollView 를 사용 하여 무한 순환 윤 방 도 를 실현 하 는 구체 적 인 코드 를 공유 하 였 으 며,구체 적 인 내용 은 다음 과 같다.

코드:

//
// ViewController.m
//     
//
// Created by limin on 17/8/23.
// Copyright © 2017  none. All rights reserved.
//
 
#import "ViewController.h"
 
@interface ViewController ()<UIScrollViewDelegate>
/*     */
@property(nonatomic,strong)NSTimer *rotateTimer;
/* */
@property(nonatomic,strong)UIPageControl *myPageControl;
@end
 
@implementation ViewController
 
- (void)viewDidLoad {
 [super viewDidLoad];
 //   scroolview       
 UIScrollView *rotateScrollView = [[UIScrollView alloc]initWithFrame:self.view.frame];
 //      
 rotateScrollView.contentSize = CGSizeMake(CGRectGetWidth(self.view.frame)*3, CGRectGetHeight(self.view.frame));
 //      
 rotateScrollView.pagingEnabled = YES;
 //       
 rotateScrollView.showsHorizontalScrollIndicator = NO;
 //       ,uilabel  
 for (int i=0; i<3; i++) {
 UILabel *subLabel = [[UILabel alloc] initWithFrame:CGRectMake(CGRectGetWidth(self.view.frame)*i, 0, CGRectGetWidth(self.view.frame), CGRectGetHeight(self.view.frame))];
 subLabel.tag = 1000+i;
 subLabel.text = [NSString stringWithFormat:@"   %d   ",i];
 [subLabel setFont:[UIFont systemFontOfSize:80]];
 subLabel.adjustsFontSizeToFitWidth = YES;
 [subLabel setBackgroundColor:[UIColor colorWithRed:arc4random()%256/255.0 green:arc4random()%256/255.0 blue:arc4random()%256/255.0 alpha:1.0]];
 [rotateScrollView addSubview:subLabel];
 
 }
 UILabel *tempLabel = [rotateScrollView viewWithTag:1000];
 //              ,             。
 UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(CGRectGetWidth(self.view.frame)*3, 0, CGRectGetWidth(self.view.frame), CGRectGetHeight(self.view.frame))];
 label.backgroundColor = tempLabel.backgroundColor;
 label.text = tempLabel.text;
 label.font = tempLabel.font;
 label.adjustsFontSizeToFitWidth = YES;
 [rotateScrollView addSubview:label];
 [self.view addSubview:rotateScrollView];
 rotateScrollView.tag = 1000;
 self.myPageControl = [[UIPageControl alloc]initWithFrame:CGRectMake(0, CGRectGetHeight(self.view.frame)-50, CGRectGetWidth(self.view.frame), 50)];
 self.myPageControl.numberOfPages = 3;
 self.myPageControl.currentPage = 0;
 [self.view addSubview:self.myPageControl];
 
 //     
 self.rotateTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(changeView) userInfo:nil repeats:YES];
 //         
 rotateScrollView.delegate = self;
}
 
#pragma mark --          
//         ,          。
-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{
 NSLog(@"      ,            ");
 //setFireDate:            
 //[NSDate distantFuture]:       
 [self.rotateTimer setFireDate:[NSDate distantFuture]];
}
 
//     (      ),     ,     
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
 //      , 1.5       
 //[NSDate dateWithTimeInterval:1.5 sinceDate:[NSDate date]]               1.5    。
 NSLog(@"     ");
 [self.rotateTimer setFireDate:[NSDate dateWithTimeInterval:1.5 sinceDate:[NSDate date]]];
}
 
 
//             
- (void)changeView{
 //  scrollView
 UIScrollView *scrollView = [self.view viewWithTag:1000];
 //    contentOffset           
 float offset_X = scrollView.contentOffset.x;
 //        
 offset_X += CGRectGetWidth(self.view.frame);
 
 //                 ,                  。                   。
 if (offset_X > CGRectGetWidth(self.view.frame)*3) {
 scrollView.contentOffset = CGPointMake(0, 0);
 
 }
 //                 ,                  。  pageControl               。
 if (offset_X == CGRectGetWidth(self.view.frame)*3) {
 self.myPageControl.currentPage = 0;
 }else{
 self.myPageControl.currentPage = offset_X/CGRectGetWidth(self.view.frame);
 }
 
 //        
 CGPoint resultPoint = CGPointMake(offset_X, 0);
 //          
 //                  ,                  ,            
 if (offset_X >CGRectGetWidth(self.view.frame)*3) {
 self.myPageControl.currentPage = 1;
 [scrollView setContentOffset:CGPointMake(CGRectGetWidth(self.view.frame), 0) animated:YES];
 }else{
 [scrollView setContentOffset:resultPoint animated:YES];
 }
 
}
 
- (void)didReceiveMemoryWarning {
 [super didReceiveMemoryWarning];
 // Dispose of any resources that can be recreated.
}
 
 
@end
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기