presentModalViewController в CGRect - PullRequest
       25

presentModalViewController в CGRect

0 голосов
/ 31 марта 2012

Можно ли представить контроллер модального вида таким образом, чтобы модальный вид был ограничен пространством, включенным в CGRect?

Если нет, объясните, как реплицировать модальное представление с перекрестным разделениемпереход между двумя видами.

Спасибо.

Ответы [ 2 ]

2 голосов
/ 31 марта 2012

Для перекрестного растворения в обычном контроллере представления вы можете установить для его modalTransitionStyle значение UIModalTransitionStyleCrossDissolve, а затем представить его модально.

Чтобы выполнить перекрестное растворение между некоторой парой подпредставлений (ограниченных их фреймами CGRects), вы можете использовать этот метод UIView:

+ (void)transitionFromView:(UIView *)fromView toView:(UIView *)toView duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options completion:(void (^)(BOOL finished))completion.

Вот как вы можете использовать это в коде:

@interface ViewController ()

@property(strong,nonatomic) UIView *redView;
@property(strong,nonatomic) UIView *blueView;

@end

@implementation ViewController

@synthesize redView=_redView;
@synthesize blueView=_blueView;

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    self.redView = [[UIView alloc] initWithFrame:CGRectMake(40.0, 40.0, 240.0, 100.0)];
    self.redView.backgroundColor = [UIColor redColor];
    [self.view addSubview:self.redView];

    self.blueView = [[UIView alloc] initWithFrame:CGRectMake(40.0, 40.0, 240.0, 100.0)];
    self.blueView.backgroundColor = [UIColor blueColor];
}

- (IBAction)crossDisolve:(id)sender {

    UIView *fromView = (self.redView.superview)? self.redView : self.blueView;
    UIView *toView = (fromView==self.redView)? self.blueView : self.redView;

    [UIView transitionFromView:fromView
                    toView:toView
                  duration:1.0
                   options:UIViewAnimationOptionTransitionCrossDissolve
                completion:^(BOOL finished) {NSLog(@"done!");}
 ];

 // now the fromView has been removed from the hierarchy and the toView has been added
 // please note that this code depends on ARC to release objects correctly

}

Более сложная часть вашего вопроса - идея сделать этот новый подвид «модальным», с помощью которого, я полагаю, вы подразумеваете, что он охватывает только часть экрана, но фокусируется исключительно на входе.Самое близкое к этому в SDK - это UIAlertView.

0 голосов
/ 01 апреля 2012

Как насчет того, чтобы использовать анимацию UIView:

UIView* view = [[UIView alloc] initWithFrame:CGRectMake(x,y,w,h)];
[view setAlpha:0];
[self.view addSubView:view];

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.5];
[view setAlpha:1];
[UIView commitAnimations];

Вуаля!Это исчезает!:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...