iPhone에서 UIView 컨트롤러를 팝업으로 표시
이 흔한 반복되는 질문에 대한 완전하고 확실한 답이 없기 때문에 여기서 묻고 답하겠습니다.
종종 우리는 발표할 필요가 있습니다.UIViewController
아래 그림과 같이 전체 화면을 가리지 않도록 합니다.
은 유사한 유사한몇가제공다니합은를지▁several▁similar▁apple다▁apple니를 제공합니다.UIViewController
를 들어, 를들어예와 같은UIAlertView
Twitter 또 Facebook 공트러등롤컨뷰는유▁twitter등러롤트또.
사용자 지정 컨트롤러에서 이러한 효과를 얻을 수 있는 방법은 무엇입니까?
참고: 이 솔루션은 iOS 8에서 고장이 났습니다. 최대한 빨리 새로운 솔루션을 게시하겠습니다.
여기서 스토리보드를 이용해서 답변을 드리려고 하는데 스토리보드 없이도 가능합니다.
Init: 두 개 만들기
UIViewController
스토리보드로- 를 들어 를예
FirstViewController
이고 어느것정이고상이고▁which▁is정.SecondViewController
팝업이 될 것입니다.
- 를 들어 를예
모달 세그: 퍼팅
UIButton
이 FirstViewController에 합니다.UIButton
SecondViewController
모달 세구로투명하게 만들기:이제 선택
UIView
(UIView
으로 사용기생성로다니됩으로 작성됩니다.UIViewController
SecondViewController
배경색을 선명한 색으로 변경합니다.배경을 어둡게 만들기: 추가
UIImageView
SecondViewController
전체 화면을 덮고 이미지를 흐리게 반투명 이미지로 설정합니다.샘플은 여기에서 얻을 수 있습니다: 배경 이미지디스플레이 설계:이제 추가
UIView
당신이 보여주고 싶은 디자인을 만들어 보세요. 제 .- 로그인 시 segue를 시이 있습니다.
SecondViewController
이름과 .
- 로그인 시 segue를 시이 있습니다.
중요:이제 그 주요 단계입니다.우리는 그것을 원합니다.
SecondViewController
FirstView 컨트롤러를 완전히 숨기지는 않습니다.우리는 선명한 색상을 설정했지만 이것만으로는 충분하지 않습니다.기본적으로 모델 프레젠테이션 뒤에 검은색을 추가하므로 viewDidLoad/의 코드 한 줄을 추가해야 합니다.FirstViewController
다른 곳에서도 추가할 수 있지만 segue 전에 실행해야 합니다.[self setModalPresentationStyle:UIModalPresentationCurrentContext];
해제:해제 시기는 사용 사례에 따라 다릅니다.이는 모달 프레젠테이션이므로 모달 프레젠테이션을 위해 수행하는 작업을 취소합니다.
[self dismissViewControllerAnimated:YES completion:Nil];
그게 다야...
어떤 종류의 제안이나 의견도 환영합니다.
데모 : 데모 소스 프로젝트는 여기에서 얻을 수 있습니다 : 팝업 데모
새로운 소식: MZFormSheetController라는 개념에 대해 매우 잘 해냈습니다.
New : 이런 기능을 얻을 수 있는 코드를 하나 더 찾았습니다 : KLC 팝업
iOS 8 Update : iOS 7과 iOS 8을 모두 사용하기 위해 이 방법을 만들었습니다.
+ (void)setPresentationStyleForSelfController:(UIViewController *)selfController presentingController:(UIViewController *)presentingController
{
if (iOSVersion >= 8.0)
{
presentingController.providesPresentationContextTransitionStyle = YES;
presentingController.definesPresentationContext = YES;
[presentingController setModalPresentationStyle:UIModalPresentationOverCurrentContext];
}
else
{
[selfController setModalPresentationStyle:UIModalPresentationCurrentContext];
[selfController.navigationController setModalPresentationStyle:UIModalPresentationCurrentContext];
}
}
prepareForSegue 내부에서 이 메서드를 사용할 수 있습니다.
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
PopUpViewController *popup = segue.destinationViewController;
[self setPresentationStyleForSelfController:self presentingController:popup]
}
인터페이스 작성기의 모달 팝업(스토리보드)
1단계
모드 팝업으로 사용할 ViewController에서 루트 UIView의 배경색을 선명하게 표시합니다. 팁: 루트 UIView를 팝업으로 사용하지 마십시오.팝업에 더 작은 새 UIView를 추가합니다.
2단계
팝업이 있는 View 컨트롤러에 Segue를 만듭니다.형식적으로 표시를 선택합니다.
여기서 팝업을 만드는 두 가지 방법
방법 1 - 세그 사용
Segue를 선택하고 프레젠테이션을 "Over Current Context"로 변경합니다.
방법 2 - 뷰 컨트롤러 사용
팝업에 해당하는 View Controller Scene(보기 컨트롤러 장면)을 선택합니다.특성 검사기의 View Controller 섹션에서 프레젠테이션을 "Over Current Context"로 설정합니다.
어떤 방법이든 효과가 있을 것입니다.그거면 충분해요!
인터페이스 작성기에서 이 작업을 수행할 수 있습니다.
- 표시할 뷰의 경우 가장 바깥쪽 뷰 배경을 투명으로 설정합니다.
- 컨트롤 + 클릭하여 호스트 뷰 컨트롤러에서 모달 뷰 컨트롤러로 끕니다.
- 현재 모델 선택
- 새로 만든 segue를 클릭하고 Attribute Inspector(오른쪽)에서 "Presentation"을 "Over Current Context"로 설정합니다.
iPhone용 폼 시트 컨트롤러 MZ 폼 시트 컨트롤러를 자유롭게 사용하십시오. 예를 들어 프로젝트에서는 전체 창을 포함하지 않고 프레젠테이션/전환 스타일이 많은 모달 뷰 컨트롤러를 표시하는 방법에 대한 많은 예가 있습니다.
또한 MZ FormSheet Presentation Controller라고 하는 최신 버전의 MZ FormSheet Controller를 사용해 볼 수 있으며 더 많은 기능이 있습니다.
EzPopup(https://github.com/huynguyencong/EzPopup), 은 Swift 포드이며 매우 사용하기 쉽습니다.
// init YourViewController
let contentVC = ...
// Init popup view controller with content is your content view controller
let popupVC = PopupViewController(contentController: contentVC, popupWidth: 100, popupHeight: 200)
// show it by call present(_ , animated:) method from a current UIViewController
present(popupVC, animated: true)
Imao는 UIImageView를 배경으로 하는 것은 좋은 생각이 아닙니다. 뷰에 했는데, First 에는 나경우개, 컨러롤뷰 2에의다 2니뷰추가 있습니다. 첫번째 뷰는[UIColor clearColor]
배경에, 투명하고 싶은 두 번째 색상(내 경우 회색).순서는 중요합니다.그런 다음 두 번째 보기의 경우 알파 0.5(알파 > = 0 < = 1)를 설정합니다.의행추습다니했의 행에 했습니다.prepareForSegue
infoVC.providesPresentationContextTransitionStyle = YES;
infoVC.definesPresentationContext = YES;
그리고 그게 다야.
스위프트 4:
오버레이 또는 팝업 뷰를 추가하려면 무료 뷰 컨트롤러(일반 객체 팔레트/라이브러리에서 컨테이너 뷰를 얻을 수 있음)를 사용할 수도 있습니다.
단계:
Container View의 내용이 표시될 때 이 Container View를 어둡게 하려면 이 Container View를 포함하는 View(그림의 ViewForContainer)가 있어야 합니다.첫 번째 View 컨트롤러 내부의 콘센트 연결
첫 번째 VC가 로드될 때 이 보기 숨기기
단추를 클릭할 때 숨기기 취소
Container View 컨텐츠가 표시될 때 이 보기를 어둡게 하려면 보기 배경을 검은색으로 설정하고 불투명도를 30%로 설정합니다.
버튼을 클릭하면 이 효과가 나타납니다.
이렇게 하면 보기 컨트롤러에 다른 하위 보기를 추가할 수 있습니다.먼저 하위 뷰로 추가할 View 컨트롤러의 상태 표시줄을 없음으로 설정하여 원하는 대로 크기를 조정할 수 있습니다.그런 다음 Present View 컨트롤러에 버튼을 만들고 버튼 클릭 방법을 만듭니다.방법:
- (IBAction)btnLogin:(id)sender {
SubView *sub = [[SubView alloc] initWithNibName:@"SubView" bundle:nil];
sub.view.frame = CGRectMake(20, 100, sub.view.frame.size.width, sub.view.frame.size.height);
[self.view addSubview:sub.view];
}
도움이 되길 바라며, 질문이 있으면 언제든지 물어보세요.
언급URL : https://stackoverflow.com/questions/16230700/display-uiviewcontroller-as-popup-in-iphone
'programing' 카테고리의 다른 글
주어진 경로에서 엑셀 파일에 데이터 프레임 쓰기 (0) | 2023.08.25 |
---|---|
스프링 JDB성능 측면에서 CTemplate VS 최대 절전 모드 (0) | 2023.08.25 |
연결되지 않은 원격 서버에 대한 Xdebug (0) | 2023.08.25 |
우리는 언제 멀티프로세싱을 호출해야 합니까?수영장. 가입? (0) | 2023.08.25 |
문자열을 일치시켜 SQL에서 두 테이블을 비교하는 가장 좋은 방법은 무엇입니까? (0) | 2023.08.25 |