2017-12-21 10 views
0

부모보기 컨트롤러에 자식보기 컨트롤러를 프로그래밍 방식으로 3.0으로 추가했습니다.자식보기 컨트롤러의 너비 변경

하지만 자식보기 컨트롤러 너비를 전체 화면으로 표시하지 않으려는 경우 하위보기 컨트롤러의 너비와 높이를 사용자 지정하려고합니다. 사용자 지정 크기 하위보기 컨트롤러를 열려고했지만 작동하지 않습니다.

// Here is my code 

let secondViewController = storyboard.instantiateViewController(withIdentifier: storyBoardName) 
secondViewController.modalPresentationStyle = UIModalPresentationStyle.custom 
secondViewController.view.frame = CGRect(x: 0, y: 0, width: self.view.bounds.width-500, height: self.view.bounds.height) 
self.present(secondViewController, animated: false, completion: nil) 

이 방법이 있습니까?

+0

이러한 종류의 사용을 위해 스토리 보드에 전체보기 컨트롤러가 아닌 사용자 정의보기를 만드는 것이 좋습니다. 스토리 보드에 맞춤보기를 만들고 ID를 부여하고 상위보기 컨트롤러 내부에서보기를 인스턴스화 한 다음 상위보기에 추가합니다. 보기에 어떤 종류의 컨트롤러가 필요하면 하나를 작성하고보기를 인스턴스화하게하고, 부모보기 컨트롤러가 주어진 자식보기를 첨부 할 수있는 메소드를 제공하십시오. – viz

답변

0

코드에서 secondviewController를 childview 컨트롤러로 추가하지 않습니다. 해당보기 컨트롤러를 표시하고 있습니다. 차이가 있습니다.

UIModalPresentationStyle.custom을 사용하여 사용자 정의 스타일을 사용하여 viewcontroller를 표시하려고합니다. 그러나이 사용자 정의 스타일을 사용하는 것은 쉬운 일이 아닙니다. documentation에서

: 사용자 정의 스타일을 만들기

는 서브 클래스 UIPresentationController을 포함하고 화면에 에게 사용자 정의보기를 애니메이션과 크기와 제시된 뷰 컨트롤러의 위치를 ​​설정하기 위해 방법을 사용하여. 프리젠 테이션 컨트롤러는 때문에 발표 뷰 컨트롤러의 특성

그것은 당신의 프레임을 설정 - (CGRect)frameOfPresentedViewInContainerViewUIPresentationController를 서브 클래 싱 (다른 방법으로) 그 방법을 서브 클래 싱 할 필요가 있음을 알려줍니다를 변경의 발생하는 모든 적응을 처리 제시된 뷰 콘트롤러.

자세한 내용은 this link에서 설명합니다.

사실상 childviewcontroller를 추가하여이 모든 작업을 수행 할 수 있습니다. 단계는 다음과 같습니다.

  1. 하위 viewcontroller 인스턴스를 만듭니다.
  2. 보기 프레임을 원하는대로 설정하십시오.
  3. addSubview:
  4. 전화를 사용하여 부모 뷰 컨트롤러의 뷰에 서브 뷰으로 해당 뷰를 추가 [addChildViewController] 부모 viewcontrller에 (https://developer.apple.com/documentation/uikit/uiviewcontroller/1621394-addchildviewcontroller)
  5. 그것은 당신이 뭘 하려는지에 따라 달라집니다
0

, 나는 다른 UIViewController 위에 UI를 보여주고 싶다. 나는 일반적으로 self.modalPresentationStyle = .overFullScreen과 함께 전체 화면보기 컨트롤러를 사용한다. 그럼 내가 실제로 사용자에게 보여주고 싶은 보이는 크기가 다른보기를 만듭니다. 이것은 당신이 원하는 무엇이든 거의 할 수 있습니다.

그러나 실제 하위보기 컨트롤러를 원한다면 appropriate functions을 사용해야합니다.