2012-04-05 13 views
6

Ich möchte eine App mit einem Menü entwickeln, die wie die ios Linkedin App eins aussieht. Wie dies (das linke Bild)LinkedIn Menü iPhone App

enter image description here

Es gibt 4 Einblicke (Miniaturen), die zu den vier Hauptarten zugeordnet sind. Und die Miniatur zeigt immer den aktualisierten Zustand der Ansicht an.

Ich würde gerne wissen, wir können ein Menü wie dieses tun?

Vielen Dank im Voraus für Ihre Hilfe!

Sébastien;)


Warum setzen Sie die 4 UIView in einem anderen UIView und nicht direkt auf dem UIViewController? Und Sie sprachen über Tasten, aber es gibt nur UIView in Ihrem Beispiel? Ich frage mich, ob die 4 Schaltflächen auf den 4 Ansichten sind und transparent sind, um die Transformation anzuwenden.

Haben Sie ein Codebeispiel für die Umwandlung?

Vielen Dank für Ihre Hilfe!

+1

... wollen Sie uns .. was genau? – badgerr

+0

Ok Entschuldigung! Ich habe die Frage vergessen! –

Antwort

1
- (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; 
} 
} 
+0

Hier ist mein Code. –

+0

Ich verstehe nicht, ich habe versucht, eine solche Scrollview und alles scheint ohne Probleme zu arbeiten, weiterhin zu schütteln und Sie sehen gut genug. Die ViewController, die Post haben etwas Besonderes? Ihr Hintergrund ist voll? – WhiteTiger

0

Ich glaube, dass diese Anwendung ist wie folgt aufgebaut:

UIViewController 
    | UIView 
    | UIView 
    | UIView 
    | UIView 
    | UIView 

Die erste enthält die Hauptansicht Regler (derjenige, der die 4 Tasten enthält), werden diese reduziert, indem (I annehmen) eine Transformation und dann das Sicht ist überlagert von einer Sicht auf die sekundäre, die zweite Voraussetzung.

Das ist, was ich denke, denn wenn Sie versuchen, die Tabelle zu scrollen und sofort zurückgehen, auch in der Miniaturansicht scrollen.

Hoffen, dass das eine Hilfe war.

+0

Also warum steckst du die 4 UIView in eine andere UIView und nicht direkt auf den UIViewController? Und du hast über Buttons gesprochen, aber es gibt nur UIView in deinem Beispiel? Ich frage mich, ob die 4 Schaltflächen auf den 4 Ansichten sind und transparent sind, um die Transformation anzuwenden. Haben Sie ein Codebeispiel für die Umwandlung? Vielen Dank für Ihre Hilfe! –

+0

Ich machte ein Beispiel, und ich nahm an, dass das System das war, das ich präsentierte, aber es ist nicht meine Idee. Zum Beispiel, in diesem Moment kann ich dich nicht lassen, ich bin bei der Arbeit, aber nur 5 Minuten versuche ich, eine Skizze zu nehmen – WhiteTiger

+0

Ok ich warte auf das Beispiel. Vielen Dank. –

0

Betrachten Sie dies als Entwurf, von der Inspiration zu nehmen:

//.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 

ich ihm helfen kann hoffen.

+0

Ich habe versucht, Ihr Beispiel, aber ich habe eine Menge komischer Dinge mit ihm .. –

+0

Betrachten Sie, dass wurde im laufenden Betrieb als Beispiel erstellt, aber was? – WhiteTiger

+0

Ich habe dein Beispiel versucht, aber ich habe eine Menge komischer Dinge damit .. Zunächst einmal sind alle thumbails nicht die gleichen wie meine Ansichten:/ Ich habe eine ScrollView, die nicht scrollen kann, wenn die Ansicht nach vorne gebracht wird und die nicht in der guten Größe ist .. Ich habe nur die Spitze von Meine Tischansicht und die 2 anderen Ansichten haben einen transparenten Teil. Ich verstehe nicht, hast du eine Idee? Hier ist der Screenshot meiner Ansicht: [link] (http://data.imagup.com/12/1148986155.2234png). Mein Code ist unten. Vielen Dank! –