2015-01-14 7 views
2

iOS 8에는 화면 회전을 처리하는 두 가지 새로운 방법이 있습니다.viewWillTransitionToSize를 사용하여 회전을 멈추는 방법

ViewWillTransitionToSize 및 willTransitionToTraitCollection.

제 질문은 어떻게 이러한 방법으로 회전을 정지합니까? 우리가 신고하는 부울이 있나요? 특정 방향을 수동으로 설정해야합니까?

+0

나는이 질문을 이해하지 못한다. 무엇을 성취하려고합니까? – MendyK

+0

@ NewEngland 특정 화면의 회전을 사용하지 못하게하고 싶습니다. – JMD

답변

2

viewWillTransitionToSize:withTransitionCoordinator:은 크기 변경과 관련된 작업을 수행 할 수 있도록보기 크기가 변경 될 예정임을 컨테이너에 통지하기위한 것입니다. 방향 구체적인 결과는 다음과 같이 당신의 VC에서 호출해야합니다

-(NSUInteger)supportedInterfaceOrientations{ 
    return UIInterfaceOrientationMaskPortrait; 
} 

편집이 호출하는 올바른 방법이며 프로그램 화면 방향을 고정하기> = 아이폰 OS 6.0부터 사용할 수있다.

내가이 답변을하고 답을 알고 있지만, 중복 질문이기 때문에, 나는 원래 대답을 할 수 있도록 적법 절차 느낀다 것까지 투표와 신용 :

여기를 참조하십시오 : How do we dictate app orientation in iOS 8?

+0

이것은 여전히 ​​회전을 허용합니다 – JMD

+0

@JMD 당신은 루트보기 컨트롤러에서 그것을하고 있습니까? – soulshined

+0

내 navigationController에? 아니. – JMD

0

JMD, 나는 당신과 같은 질문/문제를 가지고있다. 즉, 특정 화면에 대한 자동 회전을 비활성화하고 다른 모든 화면에서 자동 회전을 활성화시킨다. 앞서 말씀 드렸듯이 iOS 8의 supportedInterfaceOrientations()는 문제를 해결하기 위해 아무 것도하지 않는 것 같습니다.

viewWillTransitionToSize를 사용하는 아래 코드가 IF처럼 작동한다고 생각합니다. shouldAutorotate에 대한 부울 속성을 변경하는 방법을 알고 있습니다. 나는

self.shouldAutorotate() .boolValue = 나는 오류 메시지가 "이 식의 결과를 할당 할 수 없습니다"가지고

사실 코드를 사용하여 바로 그렇게하려고 시도 할 때. 내가 그 코드를 언급 할 때, 나는 아래의 결과를 얻을, 그래서 나는 viewWillTransitionToSize 작동하는지 알고

세로의 시뮬레이터 장치를 회전 -> LandscapeLeft 콘솔 메시지 제공 :

가 크기 변경을 전환됩니다 (그리고 나서 SIM의 회전 기기 (667.0,375.0)

로 전환 사이즈 변화율 : 667.0,375.0)

shouldAutorotate 부울 참

높이 < 폭 = (375.0,667.0)

로 전환하는 크기 변화 - ulator LandscapeLeft에서> 세로

은 (375.0,667.0)

shouldAutorotate BOOL = TRUE

높이> 폭 크기 변화를 전환한다 준다 나는 이것이 당신의 질문에 완전히 대답하지 않는다는 것을 알고 있지만, 아마도 다른 누군가가 공란을 채울 수 있습니다.

override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) { 


    println("will transition size change to \(size)") 
    var autorotateBoolValue = self.shouldAutorotate() 
    println("shouldAutorotate Bool = \(autorotateBoolValue)") 

    if (size.height > size.width) { 

     coordinator.animateAlongsideTransition({context in 

      println("height > width: transitioning size change to \(size)")}, completion: {context in 
      self.shouldAutorotate().boolValue = true 

     }) 

    } 

    else { 

     coordinator.animateAlongsideTransition({context in 

      println("height < width: transitioning size change to \(size)")}, completion: {context in 
      self.shouldAutorotate().boolValue = false 

     }) 

    } 

} 
+0

UIViewController의 shouldAutorotate 함수를 재정 의하여 자동 회전을 변경합니다. – heiko