I am creating a app that display subview like ActionSheetView and in that i have added UIGridView and UIPageControll thru outlet , but now when i click the cell it does not respond ,my subview is a ViewController with the nib file.
and if i create a button and add in my popupview programmatically then it wil displaying, and also get the click event, but anything in outlet does not respond.
i have tried to set userinteraction enable in my subview but it does not done any good.
here is my code for first view that display subview by clicking barbutton:
- (void)popUpView:(id)sender {
//self.view.backgroundColor = [UIColor darkGrayColor];
bGView = [[UIView alloc] init]; /this is the background view and all view is added in it
bGView.frame = CGRectMake(0,0,320,490);
bGView.backgroundColor = [UIColor clearColor];
bGView.alpha = 0.8 ;
CGRect viewFrame = CGRectMake(10, 90, 300, 300);
aPopUpViewController = [[PopUpViewController alloc] initWithNibName:#"PopUpViewController" bundle:nil]; //this is my view controller and when this shows on screen it display my greed view
aPopUpViewController.view.frame = viewFrame;
aPopUpViewController.view.userInteractionEnabled = YES;
[bGView addSubview:aPopUpViewController.view];
button = [UIButton buttonWithType:UIButtonTypeCustom];
[button addTarget:self
action:#selector(aMethod:)
forControlEvents:UIControlEventTouchDown];
button.backgroundColor = [UIColor clearColor];
[button setBackgroundImage:[UIImage imageNamed:#"close_button.png"] forState:UIControlStateNormal];
button.frame = CGRectMake(-1, 80, 30, 30);
[bGView addSubview:button];
//for view animation
/*
// from bottom to center animation
[bGView setFrame:CGRectMake( 0.0f, 480.0f, 320.0f, 480.0f)]; //notice this is OFF screen!
[UIView beginAnimations:#"animateTableView" context:nil];
[UIView setAnimationDuration:0.4];
[bGView setFrame:CGRectMake( 0.0f, 0.0f, 320.0f, 480.0f)]; //notice this is ON screen!
[UIView commitAnimations];*/
//for page like effect
/*[UIView transitionWithView:self.view duration:0.5
options:UIViewAnimationOptionTransitionCurlUp //change to whatever animation you like
animations:^ { [self.view addSubview:bGView]; }
completion:nil];*/
/*CATransition *transition = [CATransition animation];
transition.duration = 1.0;
transition.type = kCATransitionReveal; //choose your animation
[bGView.layer addAnimation:transition forKey:nil];
[self.view addSubview:bGView];*/
aPopUpViewController.view.userInteractionEnabled = YES;
bGView.userInteractionEnabled = YES;
self.view.userInteractionEnabled = YES;
bGView.transform = CGAffineTransformMakeScale(0.01, 0.01);
[UIView animateWithDuration:0.2 delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{
bGView.transform = CGAffineTransformIdentity;
} completion:^(BOOL finished){
// do something once the animation finishes, put it here
}];
[self.view addSubview:bGView];
addLabel.enabled = NO;
clipArt.enabled = NO;
emailItem.enabled = NO;
closeButton.enabled = NO;
self.navigationController.topViewController.title = #"Choose ClipArt";
ExampleAppDataObject* theDataObject = [self theAppDataObject];
theDataObject.navBarHide = #"no";
}
- (void)aMethod:(id)sender
{
//[aPopUpViewController.view removeFromSuperview];
//[button removeFromSuperview];
/*[UIView transitionWithView:self.view duration:0.5
options:UIViewAnimationOptionTransitionCrossDissolve//change to whatever animation you like
animations:^ { [bGView removeFromSuperview]; }
completion:nil];*/
[bGView removeFromSuperview];
addLabel.enabled = YES;
clipArt.enabled = YES;
emailItem.enabled = YES;
closeButton.enabled = YES;
self.navigationController.topViewController.title = #"Greeting's";
ExampleAppDataObject* theDataObject = [self theAppDataObject];
theDataObject.navBarHide = #"yes";
}
and this is how my screen look like
UPDATE
now i figured out my problem,problem is that i have given my whole view a tap listner,now i am adding grid view as subview so when ever i tap on cell rather then do select cell it will generate view tap gesture and thats why cell never selected,that's what i think..
add this line after you add every subviews in your main view..
[self.view bringSubviewToFront:yourGridView];
I have an iphone application in which i am adding a view controllers view with an animation like flipfrom left.I was doing it with navigationbarbutton item.when clicking on it i was adding a view controllers view to my rootview.and changing the button amd in that action i am removing that view and adding the previous button like that.but the pbm i need to remove that info view with in a button action inside that view.here is my code for the flipanimation.`
- (void)backPressed1
{
InfoViewController *infoviewcontroller = [[InfoViewController alloc] initWithNibName:#"InfoViewController" bundle:nil];
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:.95];
//[UIView beginAnimations:nil context:NULL];
//[UIView setAnimationDuration:0.5];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.view cache:YES];
//CGRect frame=CGRectMake(0,0,320,480);
[rootview removeFromSuperview];
//[infoviewcontroller.view setFrame:frame];
//selfhelpscoresAppDelegate *appdelegate=[[UIApplication sharedApplication] delegate];
[infoviewcontroller viewWillAppear:YES];
[self.view addSubview:infoviewcontroller.view];
[UIView commitAnimations];
UIImage *buttonImage = [UIImage imageNamed:#"information_btn.png"];
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setImage:buttonImage forState:UIControlStateNormal];
button.frame = CGRectMake(0, 0, 42, 32);
[button addTarget:self action:#selector(backpressed) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *customBarItem = [[UIBarButtonItem alloc] initWithCustomView:button];
self.navigationItem.rightBarButtonItem = customBarItem;
//UILabel *label =[[[UILabel alloc]init]autorelease];
self.navigationItem.title=#"Tutorial";
//label.text = #"";
//self.navigationController.title = #"";
[customBarItem release];
}
-(IBAction)backpressed
{
InfoViewController *infoviewcontroller = [[InfoViewController alloc] initWithNibName:#"InfoViewController" bundle:nil];
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:.95];
//[UIView beginAnimations:nil context:NULL];
//DailypercentageViewController *pieChart = [[DailypercentageViewController alloc] initWithNibName:#"DailypercentageViewController" bundle:nil];
//[UIView setAnimationDuration:0.5];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.view cache:YES];
//CGRect frame=CGRectMake(0,0,320,370);
[infoviewcontroller.view removeFromSuperview];
[self.view addSubview:rootview];
[UIView commitAnimations];
//[rearView setFrame:frame];
//[pieChart viewDidAppear:YES];
UIImage *buttonImage1 = [UIImage imageNamed:#"information_btn.png"];
UIButton *button1 = [UIButton buttonWithType:UIButtonTypeCustom];
[button1 setImage:buttonImage1 forState:UIControlStateNormal];
button1.frame = CGRectMake(0, 0, 42, 32);
[button1 addTarget:self action:#selector(backPressed1) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *customBarItem1 = [[UIBarButtonItem alloc] initWithCustomView:button1];
self.navigationItem.rightBarButtonItem = customBarItem1;
[customBarItem1 release];
//UILabel *label1 =[[[UILabel alloc]init]autorelease];
self.navigationItem.title=#"";
//label1.text = #"Home";
//self.title= #"Home";
}
`my problem is how i can remove this infoview and came back to the rootview from with in the button action from the infoview?
I would like to develop an app with a menu which looks like the ios Linkedin app one. Like this (the left picture)
There is 4 glimpses (miniatures) which are associated to the four principal views.
And the miniature always shows the updated state of the view.
I would like to know we can do a menu like this one ?
Thanks in advance for your help !
Sébastien ;)
So why do you put the 4 UIView in an other UIView and not directly on the UIViewController ?
And you talked about buttons but there are only UIView in your example ? I wonder if the 4 buttons are on the 4 views and are transparent in order to apply the transformation.
Do you have a code example for the transformation ?
Thanks a lot for your help !
- (void)viewDidLoad {
[super viewDidLoad];
[self.navigationItem setTitle:#"About us"];
presentationViewController = [[PresentationViewController alloc] initWithNibName:#"PresentationViewController" bundle:nil];
secteursViewController = [[SecteursViewController alloc] initWithNibName:#"SecteursViewController" bundle:nil];
engagementsViewController = [[EngagementsViewController alloc] initWithNibName:#"EngagementsViewController" bundle:nil];
interviewsViewController = [[InterviewsViewController alloc] initWithNibName:#"InterviewsViewController" bundle:nil];
presentationApercu = presentationViewController.view;
secteursApercu = secteursViewController.view;
videosApercu = interviewsViewController.view;
engagementsApercu = engagementsViewController.view;
presentationApercu.transform = CGAffineTransformMakeScale(1/(320./107), 1/(367./122.));
presentationApercu.frame = CGRectMake(27., 18., presentationApercu.frame.size.width, presentationApercu.frame.size.height);
secteursApercu.transform = CGAffineTransformMakeScale(1/(320./107), 1/(367./122.));
secteursApercu.frame = CGRectMake(185., 18., secteursApercu.frame.size.width, secteursApercu.frame.size.height);
videosApercu.transform = CGAffineTransformMakeScale(1/(320./107), 1/(367./122.));
videosApercu.frame = CGRectMake(27., 196., videosApercu.frame.size.width, videosApercu.frame.size.height);;
engagementsApercu.transform = CGAffineTransformMakeScale(1/(320./107), 1/(367./122.));
engagementsApercu.frame = CGRectMake(185., 196., engagementsApercu.frame.size.width, engagementsApercu.frame.size.height);
presentationApercu.tag = 1;
secteursApercu.tag = 2;
videosApercu.tag = 3;
engagementsApercu.tag = 4;
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:#selector(zoomAction:)];
[tap setNumberOfTapsRequired:1];
[presentationApercu addGestureRecognizer:tap];
[tap release];
tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:#selector(zoomAction:)];
[tap setNumberOfTapsRequired:1];
[secteursApercu addGestureRecognizer:tap];
[tap release];
tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:#selector(zoomAction:)];
[tap setNumberOfTapsRequired:1];
[videosApercu addGestureRecognizer:tap];
[tap release];
tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:#selector(zoomAction:)];
[tap setNumberOfTapsRequired:1];
[engagementsApercu addGestureRecognizer:tap];
[tap release];
[self.view addSubview:presentationApercu];
[self.view addSubview:secteursApercu];
[self.view addSubview:videosApercu];
[self.view addSubview:engagementsApercu];
}
#pragma mark - IBActions
- (void)zoomReverse {
[self.navigationItem setLeftBarButtonItem:nil];
UITapGestureRecognizer *tap = nil;
switch (tagEnCours) {
case 1:
[self.view bringSubviewToFront:presentationApercu];
tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:#selector(zoomAction:)];
[tap setNumberOfTapsRequired:1];
[presentationApercu addGestureRecognizer:tap];
[tap release];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.5];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
presentationApercu.transform = CGAffineTransformMakeScale(1/(320./107), 1/(367./122.));
presentationApercu.frame = CGRectMake(27., 18., presentationApercu.frame.size.width, presentationApercu.frame.size.height);
[UIView commitAnimations];
break;
case 2:
[self.view bringSubviewToFront:secteursApercu];
tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:#selector(zoomAction:)];
[tap setNumberOfTapsRequired:1];
[secteursApercu addGestureRecognizer:tap];
[tap release];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.5];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
secteursApercu.transform = CGAffineTransformMakeScale(1/(320./107), 1/(367./122.));
secteursApercu.frame = CGRectMake(185., 18., secteursApercu.frame.size.width, secteursApercu.frame.size.height);
[UIView commitAnimations];
break;
case 3:
[self.view bringSubviewToFront:videosApercu];
tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:#selector(zoomAction:)];
[tap setNumberOfTapsRequired:1];
[videosApercu addGestureRecognizer:tap];
[tap release];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.5];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
videosApercu.transform = CGAffineTransformMakeScale(1/(320./107), 1/(367./122.));
videosApercu.frame = CGRectMake(27., 196., videosApercu.frame.size.width, videosApercu.frame.size.height);
[UIView commitAnimations];
break;
case 4:
[self.view bringSubviewToFront:engagementsApercu];
tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:#selector(zoomAction:)];
[tap setNumberOfTapsRequired:1];
[engagementsApercu addGestureRecognizer:tap];
[tap release];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.5];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
engagementsApercu.transform = CGAffineTransformMakeScale(1/(320./107), 1/(367./122.));
engagementsApercu.frame = CGRectMake(185., 196., engagementsApercu.frame.size.width, engagementsApercu.frame.size.height);
[UIView commitAnimations];
break;
default:
break;
}
}
- (void)zoomAction:(UITapGestureRecognizer *)sender {
[self.navigationItem setLeftBarButtonItem:[[[UIBarButtonItem alloc] initWithTitle:#"About us" style:UIBarButtonItemStyleDone target:self action:#selector(zoomReverse)] autorelease]];
tagEnCours = sender.view.tag;
switch (sender.view.tag) {
case 1:
[self.view bringSubviewToFront:presentationApercu];
[presentationApercu removeGestureRecognizer:[presentationApercu.gestureRecognizers objectAtIndex:0]];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.5];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
presentationApercu.transform = CGAffineTransformIdentity;
presentationApercu.frame = CGRectMake(0., 0., presentationApercu.frame.size.width, presentationApercu.frame.size.height);
[UIView commitAnimations];
break;
case 2:
[self.view bringSubviewToFront:secteursApercu];
[secteursApercu removeGestureRecognizer:[secteursApercu.gestureRecognizers objectAtIndex:0]];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.5];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
secteursApercu.transform = CGAffineTransformIdentity;
secteursApercu.frame = CGRectMake(0., 0., secteursApercu.frame.size.width, secteursApercu.frame.size.height);
[UIView commitAnimations];
break;
case 3:
[self.view bringSubviewToFront:videosApercu];
[videosApercu removeGestureRecognizer:[videosApercu.gestureRecognizers objectAtIndex:0]];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.5];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
videosApercu.transform = CGAffineTransformIdentity;
videosApercu.frame = CGRectMake(0., 0., videosApercu.frame.size.width, videosApercu.frame.size.height);
[UIView commitAnimations];
break;
case 4:
[self.view bringSubviewToFront:engagementsApercu];
[engagementsApercu removeGestureRecognizer:[engagementsApercu.gestureRecognizers objectAtIndex:0]];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.5];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
engagementsApercu.transform = CGAffineTransformIdentity;
engagementsApercu.frame = CGRectMake(0., 0., engagementsApercu.frame.size.width, engagementsApercu.frame.size.height);
[UIView commitAnimations];
break;
default:
break;
}
}
I think that this application is structured as follows:
UIViewController
| UIView
| UIView
| UIView
| UIView
| UIView
The first contains the main view controller (the one containing the 4 buttons), these are reduced by (I assume) a transform and then the View is superimposed by a view of the secondary, the second requirement.
This is what I think, because if you try to scroll the table and immediately go back, even in the thumbnail view scrolling.
Hope that was of some help.
Consider this as a draft from which to take inspiration:
//.h
#import <UIKit/UIKit.h>
#interface ViewController : UIViewController
#end
//.m
#import "ViewController.h"
#interface ViewController ()
#property (nonatomic, strong) UIView *v1;
#property (nonatomic, strong) UIView *v2;
#property (nonatomic, strong) UIView *v3;
#property (nonatomic, strong) UIView *v4;
#end
#implementation ViewController
#synthesize v1 = _v1;
#synthesize v2 = _v2;
#synthesize v3 = _v3;
#synthesize v4 = _v4;
- (void)viewDidLoad {
[super viewDidLoad];
_v1 = [[UIView alloc] initWithFrame:self.view.bounds];
_v2 = [[UIView alloc] initWithFrame:self.view.bounds];
_v3 = [[UIView alloc] initWithFrame:self.view.bounds];
_v4 = [[UIView alloc] initWithFrame:self.view.bounds];
[_v1 setBackgroundColor:[UIColor redColor]];
[_v2 setBackgroundColor:[UIColor yellowColor]];
[_v3 setBackgroundColor:[UIColor blueColor]];
[_v4 setBackgroundColor:[UIColor greenColor]];
_v1.transform = CGAffineTransformMakeScale(1/(320./140.), 1/(460./210.));
_v1.frame = CGRectMake(10., 10., _v1.frame.size.width, _v1.frame.size.height);
_v2.transform = CGAffineTransformMakeScale(1/(320./140.), 1/(460./210.));
_v2.frame = CGRectMake(170., 10., _v2.frame.size.width, _v2.frame.size.height);
_v3.transform = CGAffineTransformMakeScale(1/(320./140.), 1/(460./210.));
_v3.frame = CGRectMake(10., 240., _v3.frame.size.width, _v3.frame.size.height);
_v4.transform = CGAffineTransformMakeScale(1/(320./140.), 1/(460./210.));
_v4.frame = CGRectMake(170., 240., _v4.frame.size.width, _v4.frame.size.height);
_v1.tag = 1;
_v2.tag = 2;
_v3.tag = 3;
_v4.tag = 4;
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:#selector(zoomAction:)];
[tap setNumberOfTapsRequired:1];
[_v1 addGestureRecognizer:tap];
[tap release];
tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:#selector(zoomAction:)];
[tap setNumberOfTapsRequired:1];
[_v2 addGestureRecognizer:tap];
[tap release];
tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:#selector(zoomAction:)];
[tap setNumberOfTapsRequired:1];
[_v3 addGestureRecognizer:tap];
[tap release];
tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:#selector(zoomAction:)];
[tap setNumberOfTapsRequired:1];
[_v4 addGestureRecognizer:tap];
[tap release];
[self.view addSubview:_v1];
[self.view addSubview:_v2];
[self.view addSubview:_v3];
[self.view addSubview:_v4];
UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[btn setFrame:CGRectMake(10, 10, 100, 30)];
[btn setTitle:#"Close" forState:UIControlStateNormal];
btn.tag = 1;
[btn addTarget:self action:#selector(zoomReverse:) forControlEvents:UIControlEventTouchUpInside];
[_v1 addSubview:btn];
btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[btn setFrame:CGRectMake(10, 10, 100, 30)];
[btn setTitle:#"Close" forState:UIControlStateNormal];
btn.tag = 2;
[btn addTarget:self action:#selector(zoomReverse:) forControlEvents:UIControlEventTouchUpInside];
[_v2 addSubview:btn];
btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[btn setFrame:CGRectMake(10, 10, 100, 30)];
[btn setTitle:#"Close" forState:UIControlStateNormal];
btn.tag = 3;
[btn addTarget:self action:#selector(zoomReverse:) forControlEvents:UIControlEventTouchUpInside];
[_v3 addSubview:btn];
btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[btn setFrame:CGRectMake(10, 10, 100, 30)];
[btn setTitle:#"Close" forState:UIControlStateNormal];
btn.tag = 4;
[btn addTarget:self action:#selector(zoomReverse:) forControlEvents:UIControlEventTouchUpInside];
[_v4 addSubview:btn];
}
- (void)zoomReverse:(UIButton *)sender {
UITapGestureRecognizer *tap = nil;
switch (sender.tag) {
case 1:
[self.view bringSubviewToFront:_v1];
tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:#selector(zoomAction:)];
[tap setNumberOfTapsRequired:1];
[_v1 addGestureRecognizer:tap];
[tap release];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
_v1.transform = CGAffineTransformMakeScale(1/(320./140.), 1/(460./210.));
_v1.frame = CGRectMake(10., 10., _v1.frame.size.width, _v1.frame.size.height);
[UIView commitAnimations];
break;
case 2:
[self.view bringSubviewToFront:_v2];
tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:#selector(zoomAction:)];
[tap setNumberOfTapsRequired:1];
[_v2 addGestureRecognizer:tap];
[tap release];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
_v2.transform = CGAffineTransformMakeScale(1/(320./140.), 1/(460./210.));
_v2.frame = CGRectMake(170., 10., _v2.frame.size.width, _v2.frame.size.height);
[UIView commitAnimations];
break;
case 3:
[self.view bringSubviewToFront:_v3];
tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:#selector(zoomAction:)];
[tap setNumberOfTapsRequired:1];
[_v3 addGestureRecognizer:tap];
[tap release];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
_v3.transform = CGAffineTransformMakeScale(1/(320./140.), 1/(460./210.));
_v3.frame = CGRectMake(10., 240., _v3.frame.size.width, _v3.frame.size.height);
[UIView commitAnimations];
break;
case 4:
[self.view bringSubviewToFront:_v4];
tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:#selector(zoomAction:)];
[tap setNumberOfTapsRequired:1];
[_v4 addGestureRecognizer:tap];
[tap release];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
_v4.transform = CGAffineTransformMakeScale(1/(320./140.), 1/(460./210.));
_v4.frame = CGRectMake(170., 240., _v4.frame.size.width, _v4.frame.size.height);
[UIView commitAnimations];
break;
default:
break;
}
}
- (void)zoomAction:(UITapGestureRecognizer *)sender {
switch (sender.view.tag) {
case 1:
[self.view bringSubviewToFront:_v1];
[_v1 removeGestureRecognizer:[_v1.gestureRecognizers objectAtIndex:0]];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
_v1.transform = CGAffineTransformIdentity;
_v1.frame = CGRectMake(0., 0., _v1.frame.size.width, _v1.frame.size.height);
[UIView commitAnimations];
break;
case 2:
[self.view bringSubviewToFront:_v2];
[_v2 removeGestureRecognizer:[_v2.gestureRecognizers objectAtIndex:0]];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
_v2.transform = CGAffineTransformIdentity;
_v2.frame = CGRectMake(0., 0., _v2.frame.size.width, _v2.frame.size.height);
[UIView commitAnimations];
break;
case 3:
[self.view bringSubviewToFront:_v3];
[_v3 removeGestureRecognizer:[_v3.gestureRecognizers objectAtIndex:0]];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
_v3.transform = CGAffineTransformIdentity;
_v3.frame = CGRectMake(0., 0., _v3.frame.size.width, _v3.frame.size.height);
[UIView commitAnimations];
break;
case 4:
[self.view bringSubviewToFront:_v4];
[_v4 removeGestureRecognizer:[_v4.gestureRecognizers objectAtIndex:0]];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
_v4.transform = CGAffineTransformIdentity;
_v4.frame = CGRectMake(0., 0., _v4.frame.size.width, _v4.frame.size.height);
[UIView commitAnimations];
break;
default:
break;
}
}
- (void)viewDidUnload {
[super viewDidUnload];
[self setV1:nil];
[self setV2:nil];
[self setV3:nil];
[self setV4:nil];
}
#end
I hope it can help.
How to animate custom picker view like actionsheet?
UIView *view = [[[UIView alloc]initWithFrame:CGRectMake(0,300,320,300)] autorelease];
view.backgroundColor = [UIColor brownColor];
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0];
[UIView setAnimationTransition:UIViewAnimationTransitionNone forView:[self view] cache:YES];
[view setFrame:CGRectMake(0.0f,300.0f,320.0f,325.0f)];
[UIView commitAnimations];
Just like you did:
UIView *view=[[[UIView alloc]initWithFrame:CGRectMake(0,460,320,300)]autorelease];
view.backgroundColor=[UIColor brownColor];
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0];
[UIView setAnimationTransition:UIViewAnimationTransitionNone forView:[self view] cache:YES];
[view setFrame:CGRectMake(0,0,320,300)];
[UIView commitAnimations];
But have a look at CGRect. Its (x,y,width,height). So you have to use the second parameter (y position) to animate the vertical position of your view.
Correct answer is this for custom picker view but it won't animate like action sheet. But it creates custom picker view.
items =[[NSArray alloc]initWithObjects:#"Hindi",#"English",nil];
pickerView=[[UIPickerView alloc] initWithFrame:CGRectMake(10,250,350,350)];
pickerView.transform = CGAffineTransformMakeScale(0.75f, 0.75f);
pickerView.delegate = self;
pickerView.dataSource = self;
pickerView.showsSelectionIndicator = YES;
pickerView.backgroundColor = [UIColor clearColor];
[pickerView selectRow:1 inComponent:0 animated:YES];
[self.view addSubview:view];
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView;
{
return 1;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component;
{
return [items count];
}
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
return[items objectAtIndex:row];
}
I want a button that has a another button on the backside. When you press the button it should flip horizontal and show the other button. Apple did this in the ipod-App. When you hear a song you can press the button on the right site of the navigationbar and then the view flips and you can see all the songs from the album. But the interest point is that the button on the right side flips with the view horizontal.
How can I do this?
alt text http://img51.imageshack.us/img51/585/welyrics2jpg.png
Thanks for the answer!
I dont understand this atm.
My iPhone coach did it for me a while back.. but i wasnt looking at what he did.
So heres the code.
.h
#import <UIKit/UIKit.h>
#interface flipTesViewController : UIViewController {
IBOutlet UIView *containerView;
UIImageView *heads;
UIImageView *tails;
}
-(IBAction)test;
#end
.m
#import "flipTesViewController.h"
#implementation flipTesViewController
-(IBAction)test{
[UIView beginAnimations:nil context:nil];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:containerView cache:YES];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:#selector(test)];
[UIView setAnimationDuration:.5];
if(heads.tag==1){
[containerView addSubview:heads];
heads.tag=2;
}
else{
[containerView addSubview:tails];
heads.tag=1;
}
[UIView commitAnimations];
}
- (void)viewDidLoad {
[super viewDidLoad];
heads = [[UIImageView alloc] initWithImage:[UIImage imageNamed:#"NZHeads.png"]];
tails = [[UIImageView alloc] initWithImage:[UIImage imageNamed:#"NZTails.png"]];
[containerView addSubview:heads];
}
//other method built in to view based template
#end
On 3.x there's a simpler way:
Make the "backside view" as a UIViewController or one of its subclasses.
When the your "flip" button is pressed, call
.
backsideViewCtrler.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:backsideViewCtrler animated:YES];
-(void)viewDidLoad
{
UIButton *btn; = [UIButton buttonWithType:UIButtonTypeCustom];
btn.frame = CGRectMake(x, y, 60, 40);
btn.backgroundColor = [UIColor clearColor];
[btn setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];
btn.tag=count;
[buttonWithTag setBackgroundImage:[UIImage imageNamed:#"2.png"] forState:UIControlStateNormal];
[btn setTitle:[NSString stringWithFormat:#"%d",btn.tag] forState:UIControlStateNormal];
[view_frame addSubview:btn];
[btn addTarget:self action:#selector(Click:)forControlEvents:UIControlEventTouchUpInside];
}
//action
- (IBAction)Click:(id)sender
{
UIButton *click_btn = (UIButton *)sender;
NSLog(#"%d",click_btn.tag);
UIButton *buttonWithTag = (UIButton *)[view_frame viewWithTag:click_btn.tag];
CATransition *animation = [CATransition animation];
animation.delegate = self;
animation.duration = 1.0;
animation.timingFunction = UIViewAnimationCurveEaseInOut;
animation.fillMode = kCAFillModeForwards;
animation.removedOnCompletion = NO;
animation.type = #"oglFlip";
[buttonWithTag.layer addAnimation:animation forKey:nil];
[buttonWithTag setBackgroundImage:[UIImage imageNamed:#"1.png"] forState:UIControlStateNormal];
}