Чтобы выполнить перекрестное растворение в обычном контроллере представления, вы можете установить для его 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.
person
danh
schedule
31.03.2012