0

モーダルビューがCGRectに含まれる領域に限定されるようにモーダルビューコントローラを表示できますか?CGRectのpresentModalViewController

もしそうでない場合は、2つのビュー間でモーダル・ビューの相互遷移を複製する方法を説明してください。

ありがとうございました。

答えて

0

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]; 

出来上がりを!それはフェードイン! :)

2

通常のView Controllerにクロスディゾルブするには、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です。

あなただけのUIViewアニメーション使用方法について
+0

ありがとうございました。あなたはサブビューでその使い方の簡単な例を教えてください。 –

+0

あなたはUIViewの移行を意味しますか?確かに、スーパーテストされていないものを振り、私の答えを編集します。 – danh

+0

もう一度ありがとうございます。私の特定の状況では、あなたの上に押し込まれた答えが、その単純さのためにちょっとだけ助けになりました。私は両方の答えを正確にマークすることができたらいいですが、私はすぐにこれをupvoteすることを確認します。再度、感謝します。 –

関連する問題