2017-02-21 4 views
1

SourceRect가 설정 버튼 (톱니 바퀴 아이콘이있는 버튼) 인 popover가 있습니다. Popover 위치는 LandscapeLeft를 제외한 모든 장치 방향에 대해 정확합니다. UIPopoverPresentationController가 올바른 위치에 표시되지 않습니다.

나는 엑스 코드 인터페이스 빌더에서 앵커를 설정하고 프로그래밍 소스 RECT을 설정

세로/거꾸로 (올바른) :

아래

var poc = segue.DestinationViewController as PVPencilOptionsController; 
poc.ViewModel = this.ViewModel.ColorPicker; 
var ppc = (UIPopoverPresentationController)poc.PresentationController; 
ppc.SourceRect = this.PVEditIssuePhotoPencilOptionsButton.Frame; 

가 팝 오버 위치의 결과 Portrait and upside down

가로 오른쪽 (정확함) :

당신이 볼 수 있듯이 장치 방향이 가로 왼쪽 경우

Landscape Right

풍경 왼쪽 (잘못된)

Landscape Left

은의 팝 오버 화살표와 설정 버튼 사이의 간격이있다.

어떻게 이러한 차이가 발생했는지 알아내는 방법은 무엇입니까?

답변

0

나는 simlar 문제를 겪었고, 잘못된 값으로 잘못된 값을 사용하여 크기와 위치를 계산하기 때문에 문제가 발생했습니다. 문제를 찾기 위해 제안 할 두 가지가 있습니다.

1. LayoutSubviews에서 모든 위치/크기 계산을 수행하십시오 : 컨트롤러의 LayoutSubviews를 무시하고 위치 정보를 계산하십시오. 기본 호출 후.

2. 프레임의 외곽 치수와 경계 :이 방법을 사용하면 갖고있는 것을 볼 수 있고 원하는 위치를 알 수 있습니다. 차이를 확인하려면 레이아웃 하위보기 전후에이 작업을 수행하십시오.

+0

두 솔루션을 모두 시도했지만 여전히 문제를 찾을 수 없습니다. 프레임과 범위가 정확하고 SourceRect 위치도 정확합니다. – currarpickt

+0

@currarpickt 그것은 파머입니다. 내가 포지셔닝 및 크기 조정 문제를 해결하는 또 다른 방법은 위치를 지정하려는 항목의 배경색을 설정하고 항목을 배치하는 방식으로 모든 항목이 예상대로 표시되는지 확인하는 것입니다. 그게 내가 너를 만나는 것을 볼 수있는 유일한 방법이야. –

+0

나는 그 중 하나를 시도해 보았고 모든 배경색을 바꿨으며 모든 것이 올바른 위치에있다. – currarpickt

관련 문제