はじめに
ビンゴ中西です。
CSSにインスパイアされたモーダルビュー
autresphere/ASDepthModal · GitHub
を試してみました。
準備しよう!
QuartzCore.frameworkをXcodeから入れよう!
Accelerate.frameworkをXcodeから入れよう!
githubからASDepthModalディレクトリをあなたのプロジェクトに入れよう!
.hはこんな感じ
1
2
3
4
5
6
7
|
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
@property(nonatomic, strong) IBOutlet UIView *popupView;
@end
|
.mはこんな感じ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
#import “ViewController.h”
#import “ASDepthModalViewController.h”
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
#pragma mark – Actions
- (IBAction)showModalViewAction:(id)sender
{
[ASDepthModalViewController presentView:self.popupView
withBackgroundColor:nil
popupAnimationStyle:ASDepthModalAnimationDefault
blur:YES];
}
- (IBAction)closePopupAction:(id)sender
{
[ASDepthModalViewController dismiss];
}
@end
|
.xibはこんな感じ
注意!
self.popupViewがモーダル表示されるのだが、
このViewがはじめなんかボヤボヤとしてぼやけて表示されてしまって、ハマってしまった。
なぜかと思ってソースを読むと、self.popupViewの位置を画面中央にあわせようとしている処理があるためだった。
なので、self.popupViewになるViewの縦幅と横幅は偶数になるように指定しておいた方が良い。
注意!!
閉じるボタンを用意しなくても、画面をタップしちゃうと閉じる仕様なので、
間違って閉じてしまう可能性がありそう。それが嫌なら、
1
2
3
4
5
|
#pragma mark – Action
- (void)handleCloseAction:(id)sender
{
// [self dismiss];
}
|
こんな感じに、ASDepthModalViewController.mをいじっちゃってもよいかも。
ジェスチャー登録してる処理もコメントアウトしたほうがもっとスマートかもだけどね。