Cómo se podría ir sobre la presentación de «la mitad de vista de» controlador » en la parte superior de la vista principal de la controladora?

Requisitos:
– Presentar un segundo controlador de vista que se desliza sobre la parte superior de la vista principal del controlador.
– Segundo punto de vista controlador sólo debe mostrar más de la mitad de la vista principal de la controladora
– Vista principal controlador debe permanecer visible detrás de la segunda vista controlador (fondo transparente, no mostrando negro debajo)
– Segundo punto de vista controlador debería animar con animación similar a la modal vertical de la cubierta, o de iOS 7 de transición personalizado
– El usuario puede interactuar con los botones en la vista controlador cuando el segundo punto de vista controlador está activo (es decir, segundo controlador de vista de no cubrir la totalidad de la vista principal del controlador)r
– Segundo punto de vista controlador tiene su propia lógica compleja (no puede ser un simple punto de vista)
– Storyboards, Desemboca, iOS 7 sólo
– sólo para iPhone, iPad no.

He probado con modales de controlador de vista, pero esto no permite la interacción con el principal controlador de vista. Alguien puede dar un ejemplo de cómo hacer esto con iOS7 personalizado de transición o de otro método.

Eche un vistazo a UIActionSheet , que podría resolver su problema . Aquí está el enlace usted puede comenzar con : eureka.ykyuen.info/2010/04/14/iphone-uiactionsheet-example

OriginalEl autor johnsampson | 2014-04-05

1 Comentario

  1. 26

    Una forma de hacerlo es añadir la mitad «modal» controlador como un niño de controlador de vista, y la animación de su vista en el lugar. Para este ejemplo, he creado la mitad «modal» controlador «en el guión gráfico con un marco que es la mitad de la altura de un 4» pantalla del iPhone. Usted podría utilizar más métodos dinámicos para dar cuenta de los diferentes tamaños de pantalla, pero esto debe empezar.

    @interface ViewController ()
    @property (strong,nonatomic) UIViewController *modal;
    @end
    
    @implementation ViewController
    
    
    - (IBAction)toggleHalfModal:(UIButton *)sender {
        if (self.childViewControllers.count == 0) {
            self.modal = [self.storyboard instantiateViewControllerWithIdentifier:@"HalfModal"];
            [self addChildViewController:self.modal];
            self.modal.view.frame = CGRectMake(0, 568, 320, 284);
            [self.view addSubview:self.modal.view];
            [UIView animateWithDuration:1 animations:^{
                self.modal.view.frame = CGRectMake(0, 284, 320, 284);;
            } completion:^(BOOL finished) {
                [self.modal didMoveToParentViewController:self];
            }];
        }else{
            [UIView animateWithDuration:1 animations:^{
                self.modal.view.frame = CGRectMake(0, 568, 320, 284);
            } completion:^(BOOL finished) {
                [self.modal.view removeFromSuperview];
                [self.modal removeFromParentViewController];
                self.modal = nil;
            }];
        }
    }
    Esto funciona bien. Buena solución. ¿Cuál sería la mejor manera de despedir este modal de en el modal de controlador de vista? (no cambiar de la vista principal del controlador)
    usted puede obtener un puntero a la vista principal del controlador con el auto.parentViewController, y el uso que para llamar a toggleHalfModal.
    lo siento. Yo soy un verdadero novato. Tengo el modal de trabajo gracias a su código. Cómo iba yo a llamar toggleHalfModal de la modal mediante auto.parentViewController?
    de la misma manera de llamar a cualquier método — [objectToSendMessageTo mensaje]; En este caso el objeto que desea enviar el mensaje de que es uno mismo.parentViewController (tendrás que lanzarla por lo que el compilador sabe lo que es, y la importación de sus .h archivo). Así que le da [(MainViewController *)auto.parentViewController toggleHalfModal]; Reemplazar MainViewController con lo que el nombre de la clase es de ese controlador.
    Una forma sería la de añadir un semi-opaco (negro con un bajo valor de alfa) ver sobrepasan a la vista original antes de la animación en la nueva vista.

    OriginalEl autor rdelmar

Dejar respuesta

Please enter your comment!
Please enter your name here