투명 배경 모달 뷰 컨트롤러 띄우기
MyModalViewController *vc = [[MyModalViewController alloc] initWithNibName:@"name" budle:nil];
vc.modalPresentaitionStyle = UIModalPresentationOverCurrentContext;
[self presentViewController:vc animated:YES completion:nil];
이 스타일들은 보여지는 뷰 컨트롤러에 적용해야 한다.
아래 스타일은 인터페이스빌더에서도 적용 가능하다.
그런데 UIModalPresentationOverCurrentContext 는 UIModalPresentationOverFullScreen 과 차이를 모르것다.
아무튼 둘다 투명한(이전뷰가 보이는) 모달뷰를 띄워준다.
띄워질 뷰컨트롤러의 view 배경은 투명으로 설정되어야 한다.
* 모달 표현 스타일 : 위에 사용된 스타일은 IOS 8.0 이상
typedef NS_ENUM(NSInteger, UIModalPresentationStyle) {
UIModalPresentationFullScreen = 0,
UIModalPresentationPageSheet NS_ENUM_AVAILABLE_IOS(3_2) __TVOS_PROHIBITED,
UIModalPresentationFormSheet NS_ENUM_AVAILABLE_IOS(3_2) __TVOS_PROHIBITED,
UIModalPresentationCurrentContext NS_ENUM_AVAILABLE_IOS(3_2),
UIModalPresentationCustom NS_ENUM_AVAILABLE_IOS(7_0),
UIModalPresentationOverFullScreen NS_ENUM_AVAILABLE_IOS(8_0),
UIModalPresentationOverCurrentContext NS_ENUM_AVAILABLE_IOS(8_0),
UIModalPresentationPopover NS_ENUM_AVAILABLE_IOS(8_0) __TVOS_PROHIBITED,
UIModalPresentationNone NS_ENUM_AVAILABLE_IOS(7_0) = -1,
};
* 에니메이션 스타일 : 페이드 효과는 cross dissolve
typedef NS_ENUM(NSInteger, UIModalTransitionStyle) {
UIModalTransitionStyleCoverVertical = 0,
UIModalTransitionStyleFlipHorizontal __TVOS_PROHIBITED,
UIModalTransitionStyleCrossDissolve,
UIModalTransitionStylePartialCurl NS_ENUM_AVAILABLE_IOS(3_2) __TVOS_PROHIBITED,
};
모달뷰 닫기
[self dismissModalViewControllerAnimated:YES];
배경 투명정도 조절 및 색상
어트리뷰트 인스펙터상에 alpha 항목이 있는데, 뷰컨트롤러의 view에 이를 적용하면 하위뷰를 포함한 전체에 영향을 미친다.
이경우 별도의 뷰를 추가해 전체 크기로 constraint 잡아주고, 해당 뷰만 alpha값과 배경색을 지정해 주면 된다.
view
BackgroundView
ContentView
UIPopoverPresentationController
@interface MainViewController : UIViewController <UIPopoverPresentationControllerDelegate>
@end
@implementation MainViewController
.
.
-(void)onMyAction:(id)sender
{
MyPopoverVC *pop = [[MyPopoverVC alloc] initWithNibName:@"MyPopoverVC" bundle:nil];
pop.modalPresentationStyle = UIModalPresentationPopover;
pop.preferredContentSize = CGsizeMake(100,100);
UIPopoverPresentationController *overVC = pop.popoverPresentationController;
overVC.sourceView = _my_ui_object;
overVC.sourceRect = CGRectMake(0,0, _my_ui_object.frame.size.width, _my_ui_object.frame.size.height);
overVC.delegate = self;
[self presentViewController:pop animated:YES completion:nil];
}
// override
-(UIModalPresentationStyle)adaptivePresentationStyleForPresentationController:(UIPresentationController *)controller
{
return UIModalPresentationNone;
}
.
.
@end
'프로그래밍 > iOS,macOS' 카테고리의 다른 글
UITableView , UITextView 동적 크기 변화 및 스크롤 (0) | 2016.11.24 |
---|---|
폰의 사진, 앨범 가져오기 (0) | 2016.11.21 |
NSString 문자열 관련/정규식/텍스트뷰 등... (0) | 2016.11.07 |
이것저것 Objective-C 관련 노트~ (0) | 2016.11.01 |
아이폰 시뮬레이터 로그 터미널로 보기 (0) | 2016.11.01 |
ChildViewController (0) | 2016.10.27 |
오토레이아웃 이것저것 / Constraint / UITextView (0) | 2016.10.25 |
커스텀객체와 인터페이스빌더 (0) | 2016.10.23 |
스토리보드 / XIB (0) | 2016.10.22 |
싱글톤 (0) | 2016.10.19 |