//
// MenuHomeViewController.m
// HFYS
//
// Created by Showsoft_002 on 13-8-14.
// Copyright (c) 2013年 Showsoft_002. All rights reserved.
//
#import "MenuHomeViewController.h"
#import "MainControlViewController.h"
#import "iCarousel.h"
#import "AssitentTimer.h"
#import "ContentPageViewController.h"
#import "ItemsSubViewIndex.h"
#import "UIEffectDesignerView.h"
#import "CalculatorViewController.h"
#import "JiSuanQiViewController.h"
#define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
#define NUMBER_OF_ITEMS (IS_IPAD? 19: 12)
#define NUMBER_OF_VISIBLE_ITEMS 5
#define ITEM_SPACING 77
#define INCLUDE_PLACEHOLDERS NO
typedefenum {
items_BrandHomeView = 0 ,
items_TraficHomeView,
items_ProjectHomeView ,
items_PropertyShowView,
items_CalulatorShowView,
}ItemsViewControllerNameEnum;
@interfaceMenuHomeViewController ()<iCarouselDataSource , iCarouselDelegate,AsstentTimerDelegate>{
UIImageView *backImageView;
int subViewIndex;
iCarousel *myIcarousel;
NSArray *contentArray;
JiSuanQiViewController *jisuanqiView;
ContentPageViewController *contentPageView;
CGRect remberFrame;
NSTimer *animationTimer;
}
-(void)calButtonAction:(UIButton *)sender;
@end
@implementation MenuHomeViewController
- (void)dealloc{
if( contentPageView ){
[contentPageView.viewremoveFromSuperview];
contentPageView = nil;
}
myIcarousel.delegate = nil;
myIcarousel.dataSource = nil;
[myIcarouselremoveFromSuperview];
myIcarousel = nil ;
contentArray = nil ;
[backImageViewremoveFromSuperview];
backImageView = nil ;
[selfstopMenuTimer];
}
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
returnself;
}
- (void)viewDidLoad
{
[superviewDidLoad];
// Do any additional setup after loading the view.
backImageView = [[UIImageViewalloc]initWithFrame:CurrentDeviceBounds];
backImageView.userInteractionEnabled = YES ;
backImageView.tag = 1 ;
[self.viewaddSubview:backImageView];
UIEffectDesignerView* effectView = [UIEffectDesignerVieweffectWithFile:@"StartPage.ped"];
[backImageView addSubview:effectView];
contentArray = [NSArrayarrayWithObjects:
SSENCRYPTED_IMAGE(@"Item_pic1.png"),SSENCRYPTED_IMAGE(@"Item_pic2.png"),SSENCRYPTED_IMAGE(@"Item_pic3.png"),SSENCRYPTED_IMAGE(@"Item_pic4.png"),SSENCRYPTED_IMAGE(@"Item_pic5.png"),
nil];
// myIcarousel = [[iCarousel alloc] initWithFrame:CGRectMake(0, 670/2 , 1024, 300)];//CGRectMake(0, 392/2-150, 790, 515)
// myIcarousel.type = iCarouselTypeCylinder;
// myIcarousel.delegate = self;
// myIcarousel.dataSource = self;
// //add carousel to view
// [backImageView addSubview:myIcarousel];
}
- (void)didReceiveMemoryWarning
{
[superdidReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (void)enterAnimationWhenAppear{
float delayTimes = 0;
GYLWhiteMaskView *logo = [self addLogoWithFrame:CGRectMake((1024-216)/2, 126/2, 216, 185) inView:backImageView];
[selfgeneryallyAnimationWithView:logo animationType:GenerallyAnimationSliderFormTopduration:0.3delayTime:delayTimes finishedBlock:nil];
delayTimes += 0.3;
NSArray *array = [NSArray arrayWithObjects:
[NSValue valueWithCGPoint:CGPointMake(926/2, 672/2)],@"Item_pic3.png",
[NSValue valueWithCGPoint:CGPointMake(656/2, 730/2)],@"Item_pic2.png",
[NSValue valueWithCGPoint:CGPointMake(1224/2, 730/2)],@"Item_pic4.png",
[NSValue valueWithCGPoint:CGPointMake(406/2, 766/2)],@"Item_pic1.png",
[NSValue valueWithCGPoint:CGPointMake(1488/2, 766/2)],@"Item_pic5.png",
nil];
for( int i=0;i<5;i++ ){
NSString *string = [array objectAtIndex:2*i+1];
UIImage *locImage = SSENCRYPTED_IMAGE(string);
CGRect framess ;
framess.origin = [[array objectAtIndex:2*i] CGPointValue];
framess.size = locImage.size;
UIButton *button = [UIButtonbuttonWithType:UIButtonTypeCustom];
button.frame = framess;
button.tag = 100 + i ;
[button setBackgroundImage:locImage forState:UIControlStateNormal];
[button addTarget:selfaction:@selector(itemsButtonAction:) forControlEvents:UIControlEventTouchUpInside];
[backImageView addSubview:button];
[selfpopAnimationAndRoateWithView:button delayTime:delayTimes];
if( i%2 == 0 ) delayTimes += 0.6 ;
}
UIButton *backHomeButton = [UIButtonbuttonWithType:UIButtonTypeCustom];
backHomeButton.frame = CGRectMake((1024-146)/2, 1374/2 - 20, 146, 20+40);
[backHomeButton setImage:SSENCRYPTED_IMAGE(@"BackHomeButton.png") forState:UIControlStateNormal];
[backHomeButton addTarget:selfaction:@selector(backButtonAction:) forControlEvents:UIControlEventTouchUpInside];
[backImageView addSubview: backHomeButton];
[selfgeneryallyAnimationWithView:backHomeButton animationType:GenerallyAnimationSliderFormBottomduration:0.3delayTime:delayTimes finishedBlock:nil];
UIButton *calButton = [UIButtonbuttonWithType:UIButtonTypeCustom];
calButton.frame = CGRectMake(1906/2 - 10, 32/2-10, 36+20, 36+20);
[calButton setImage:SSENCRYPTED_IMAGE(@"CalclutorBtn.png") forState:UIControlStateNormal];
[calButton addTarget:selfaction:@selector(calButtonAction:) forControlEvents:UIControlEventTouchUpInside];
[backImageView addSubview:calButton];
[selfgeneryallyAnimationWithView:calButton animationType:GenerallyAnimationSliderFormTopduration:0.3delayTime:delayTimes finishedBlock:nil];
[selfstartAssitentTimer];
[selfstartMenuTimer];
}
-(void)startMenuTimer{
//定时翻转列表
animationTimer = [NSTimerscheduledTimerWithTimeInterval:3target:selfselector:@selector(timeAction:) userInfo:nilrepeats:YES];
}
-(void)stopMenuTimer{
//释放Timer
if (animationTimer) {
[animationTimerinvalidate];
animationTimer = nil;
}
}
//定时器事件
-(void)timeAction:(id)sender
{
NSLog(@"time");
[selfstartItemAnimation:YES];
}
//播放列表动画
-(void)startItemAnimation:(BOOL)isLeft
{
int count=5;
if(!isLeft)
{
for (int i=0; i<count; i++) {
[UIViewanimateWithDuration:0.7delay:0.2*i options:UIViewAnimationOptionCurveEaseInOutanimations:^{
UIView *parentView = [backImageView viewWithTag:100+(count-1 -i)];
//设置动画效果
[UIViewsetAnimationTransition: UIViewAnimationTransitionFlipFromRightforView:parentView cache:NO]; //从上向下
}completion:nil];
}
}else
{
for (int i=0; i<count; i++) {
[UIViewanimateWithDuration:0.7delay:0.2*i options:UIViewAnimationOptionCurveEaseInOutanimations:^{
UIView *parentView = [backImageView viewWithTag:100+i];
//设置动画效果
[UIViewsetAnimationTransition: UIViewAnimationTransitionFlipFromLeftforView:parentView cache:NO]; //从上向下
}completion:nil];
}
}
}
- (void)popAnimationAndRoateWithView:(UIView *)animationView delayTime:(float)delayTime{
__weakMenuHomeViewController *weakSelf = self ;
[selfgeneryallyAnimationWithView:animationView animationType:GenerallyAnimationPopOutduration:0.3delayTime:delayTime finishedBlock:^{
[weakSelf roateAnimationWithView:animationView];
}];
}
- (void)roateAnimationWithView:(UIView *)animaitonView{
[UIViewanimateWithDuration:0.7delay:0options:UIViewAnimationOptionCurveEaseInOutanimations:^{
//设置动画效果
[UIViewsetAnimationTransition: UIViewAnimationTransitionFlipFromLeftforView:animaitonView cache:NO]; //从上向下
}completion:nil];
}
- (void)backButtonAction:(UIButton *)sender{
UIResponder *sponder = [selfcheckNextResponderIsKindOfViewController:[MainControlViewControllerclass]];
if( sponder ){
MainControlViewController *lfc = (MainControlViewController *)sponder ;
[lfc transViewToHomePageView];
}
}
- (void)playVideoAction:(UIButton *)sender{
UIResponder *sponder = [selfcheckNextResponderIsKindOfViewController:[MainControlViewControllerclass]];
if( sponder ){
MainControlViewController *lfc = (MainControlViewController *)sponder ;
[lfc transViewToVideoView];
}
}
- (void)calculatorButtonAction:(UIButton *)sender{
if( contentPageView ) return ;
remberFrame = sender.frame ;
contentPageView = [[ContentPageViewControlleralloc]init];
contentPageView.transIndex = PageSix_Title;
contentPageView.view.frame = CurrentDeviceBounds;
[self.viewaddSubview:contentPageView.view];
[selffallInTransitionToView:contentPageView.viewwith:backImageViewanimationTime:0.5transContent:nilcompletion:^{
[contentPageViewenterAnimationWhenAppear];
}];
}
- (void)releaseAddSubView{
if(jisuanqiView)
{
[selfgeneryallyAnimationWithView:jisuanqiView.viewanimationType:GenerallyAnimationFadeOutduration:.5delayTime:0finishedBlock:^{
[jisuanqiView.viewremoveFromSuperview];
jisuanqiView=nil;
}];
}
if( !contentPageView ) return ;
backImageView.alpha = 1 ;
backImageView.transform = CGAffineTransformScale(CGAffineTransformMakeRotation(0.0) , 1.f , 1.f);
[selfbackTransitionWithView:contentPageView.viewto:backImageViewtransFrame:remberFrameanimationTime:0.5transContent:nilcompletion:^{
[contentPageView.viewremoveFromSuperview];
contentPageView = nil;
[selfstartAssitentTimer];
[selfstartMenuTimer];
}];
}
- (void)startAssitentTimer{
// [[self.view viewWithTag:123456] removeFromSuperview];
//
// AssitentTimer *locView = [[AssitentTimer alloc]initWithFrame:CGRectMake(0, 0, 10, 10)];
// locView.userInteractionEnabled = NO ;
// locView.tag = 123456;
// locView.myDelegate = self ;
// [self.view insertSubview:locView atIndex:0];
//
// [locView startTimerWithTime:3 isLoop:YES];
}
- (void)assitentTimerEndWithCurrentView:(UIView *)currentView{
// int nums = myIcarousel.currentItemIndex;
// nums ++ ;
// if( nums >= [contentArray count]*2 ){
// nums = 0 ;
// }
//
// [myIcarousel scrollToItemAtIndex:nums animated:YES];
}
- (void)stopAssitentTimer{
// [[self.view viewWithTag:123456] removeFromSuperview];
}
#pragma mark -
#pragma mark iCarousel methods
- (NSUInteger)numberOfItemsInCarousel:(iCarousel *)carousel
{
return [contentArraycount]*2;
}
- (NSUInteger)numberOfVisibleItemsInCarousel:(iCarousel *)carousel
{
//limit the number of items views loaded concurrently (for performance reasons)
returnNUMBER_OF_VISIBLE_ITEMS;
}
- (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index reusingView:(UIView *)view
{
//create new view if no view is available for recycling
if (view == nil)
{
view = [[UIView alloc]initWithFrame:CGRectMake(0, 0, ITEM_SPACING, myIcarousel.bounds.size.height)];
view.clipsToBounds = NO ;
UIImageView *downImageView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 77, 200)];
downImageView.tag = 10 ;
[view addSubview:downImageView];
}
UIImageView *downImageView = (UIImageView *)[view viewWithTag:10];
// NSString *string = [downImageArray objectAtIndex:index % 4];
downImageView.image = [contentArray objectAtIndex:index%5 ];
return view;
}
- (NSUInteger)numberOfPlaceholdersInCarousel:(iCarousel *)carousel
{
//note: placeholder views are only displayed if wrapping is disabled
returnINCLUDE_PLACEHOLDERS? 2: 0;
}
- (CGFloat)carouselItemWidth:(iCarousel *)carousel
{
//slightly wider than item view
returnITEM_SPACING;
}
- (BOOL)carouselShouldWrap:(iCarousel *)carousel
{
//wrap all carousels
returnYES;
}
- (CGFloat)carousel:(iCarousel *)carousel itemAlphaForOffset:(CGFloat)offset
{
//set opacity based on distance from camera
return 1.0f - fminf(fmaxf(offset, 0.0f), 1.0f);
}
- (CATransform3D)carousel:(iCarousel *)_carousel itemTransformForOffset:(CGFloat)offset baseTransform:(CATransform3D)transform
{
//implement 'flip3D' style carousel
transform = CATransform3DRotate(transform, M_PI / 8.0f, 0.0f, 1.0f, 0.0f);
return CATransform3DTranslate(transform, 0.0f, 0.0f, offset * myIcarousel.itemWidth);
}
- (CGFloat)carousel:(iCarousel *)carousel valueForTransformOption:(iCarouselTranformOption)option withDefault:(CGFloat)value
{
switch (option)
{
caseiCarouselTranformOptionArc:
{
return 2 * M_PI * 0.1;
}
caseiCarouselTranformOptionRadius:
{
return value * 1.8;
}
caseiCarouselTranformOptionTilt:
{
return 0.5;
}
caseiCarouselTranformOptionSpacing:
{
return 1;
}
default:
{
return value;
}
}
}
- (void)carouselWillBeginDragging:(iCarousel *)carousel{
[selfstopAssitentTimer];
}
- (void)carouselDidEndDragging:(iCarousel *)carousel willDecelerate:(BOOL)decelerate{
[selfstartAssitentTimer];
}
- (void)carousel:(iCarousel *)carousel didSelectItemAtIndex:(NSInteger)index{
if( contentPageView ) return ;
[selfstopAssitentTimer];
NSArray *array = [NSArray arrayWithObjects:
[NSNumber numberWithInt:PageOne_Title],
[NSNumber numberWithInt:PageTwo_Title],
[NSNumber numberWithInt:PageThree_Title],
[NSNumber numberWithInt:PageFour_Title],
[NSNumber numberWithInt:PageFive_Title],
nil];
int nums = index % 5 ;
UIView *locView = [myIcarousel itemViewAtIndex:index];
UIImageView *imageView = (UIImageView *)[locView viewWithTag:10];
remberFrame = [locView convertRect:imageView.frame toView:backImageView];
NSLog(@"remberFrame is %@" , NSStringFromCGRect(remberFrame));
contentPageView = [[ContentPageViewControlleralloc]init];
contentPageView.transIndex = [[array objectAtIndex:nums] integerValue];
contentPageView.view.frame = CurrentDeviceBounds;
[self.viewaddSubview:contentPageView.view];
[selffallInTransitionToView:contentPageView.viewwith:backImageViewanimationTime:0.5transContent:nilcompletion:^{
[contentPageViewenterAnimationWhenAppear];
}];
}
- (void)itemsButtonAction:(UIButton *)sender{
int index = sender.tag % 100 ;
if( contentPageView ) return ;
[selfstopAssitentTimer];
NSArray *array = [NSArray arrayWithObjects:
[NSNumber numberWithInt:PageThree_Title],
[NSNumber numberWithInt:PageTwo_Title],
[NSNumber numberWithInt:PageFour_Title],
[NSNumber numberWithInt:PageOne_Title],
[NSNumber numberWithInt:PageFive_Title],
nil];
int nums = index % 5 ;
remberFrame = sender.frame;
NSLog(@"remberFrame is %@" , NSStringFromCGRect(remberFrame));
contentPageView = [[ContentPageViewControlleralloc]init];
contentPageView.transIndex = [[array objectAtIndex:nums] integerValue];
contentPageView.view.frame = CurrentDeviceBounds;
[self.viewaddSubview:contentPageView.view];
[selffallInTransitionToView:contentPageView.viewwith:backImageViewanimationTime:0.5transContent:nilcompletion:^{
[contentPageViewenterAnimationWhenAppear];
}];
[selfstopMenuTimer];
}
//计算器
-(void)calButtonAction:(UIButton *)sender
{
if( contentPageView ) return ;
remberFrame = sender.frame;
contentPageView = [[ContentPageViewControlleralloc]init];
contentPageView.transIndex = PageSix_Title;
contentPageView.view.frame = CurrentDeviceBounds;
[self.viewaddSubview:contentPageView.view];
[selffallInTransitionToView:contentPageView.viewwith:backImageViewanimationTime:0.5transContent:nilcompletion:^{
[contentPageViewenterAnimationWhenAppear];
}];
// jisuanqiView=[[JiSuanQiViewController alloc]init];
// jisuanqiView.view.frame=CurrentDeviceBounds;
// [self.view addSubview:jisuanqiView.view];
//
// [jisuanqiView enterAnimationWhenAppear];
}
@end