2011-09-20 4 views
3

UIPageControl을 세로 모드와 가로 모드로 중앙 집중화하려하지만 작동하지 않으면 x가 장치 회전 후에 변경됩니다. 방향 변경 후 센터 UIPageControl

@interface DetailViewController : UIViewController<UIScrollViewDelegate> 
{ 
    UIPageControl *pageControl; 
} 

- (void)viewDidLoad 
{ 
    pageControl = [[UIPageControl alloc] init] ; 
    [self renderMyView]; 
    [self.view addSubview:pageControl]; 
} 

- (void)renderMyView 
{ 
    if(isPortrait) 
    { 
     pageControl.frame = CGRectMake(200, 976, 0, 0); 
    } else { 
     pageControl.frame = CGRectMake(200, 720, 0, 0); 
    } 
} 

renderMyView

didLoaddidRotate에서 실행됩니다.

처음으로 viewDidLoad은 세로 및 가로에서 잘 작동하지만 기기를 회전하면 pageControl이 다른 x != 200으로 표시됩니다.

나는 또한 pageControl.center을 시도했지만 작동하지 않았습니다.

어떻게하면 중앙 집중식으로 유지할 수 있습니까?

답변

5

1) viewDidLoad에서 renderMyView으로 전화하십시오. 장치가 회전 후

2)하지 호출 방법 renderMyView

3) renderMyView 일이와 당신의 교체 :

- (void)renderMyView 
{ 
    if(isPortrait) 
    { 
     pageControl.frame = CGRectMake(200, 976, 0, 0); 
    } else { 
     pageControl.frame = CGRectMake(200, 720, 0, 0); 
    } 
    pageControl.autoresizingMask = UIViewAutoresizingFlexibleBottomMargin; 
} 

그래서, 내 renderMyView 두 개 이상의 시간을 호출하지 않습니다 . AutoresizingMask 만 있으면됩니다.

제발, 제발, 만약 당신을 위해 작동합니다.

추신 : autoresizingMask에 대한 자세한 내용은 UIView Documentation을 참조하십시오.

0

설정 코드에서 UIView의 autoresizingMask는 :

pageControl.autoresizingMask = UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleLeftMargin; 

또는 당신은 또한 인터페이스 빌더에서이 작업을 수행 할 수 있습니다.

1

아마도 매우 오래된 질문이지만 UIPageControl의 중심을 공유 할 것입니다. UIPageControl의 너비를 뷰의 경계 크기 너비와 같은 너비로 설정하기 만하면됩니다. 그래서, 세로 모드에서는 768이 될 것이고 풍경에서는 1024가 될 것입니다. 그것은 나를 위해 작동합니다.