2011-09-20 56 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); 
    } 
} 

renderMyViewdidLoaddidRotate執行。

在第一次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將盡你所需。

請告訴我,如果它適合你。

PS:有關autoresizingMask的更多信息,請閱讀UIView Documentation

0

設置了UIView autoresizingMask代碼:

pageControl.autoresizingMask = UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleLeftMargin; 

或者你也可以做到這一點在Interface Builder。

1

可能是一個非常古老的問題,但我會分享我的方式來集中UIPageControl。只需將UIPageControl的寬度設置爲與視圖邊界大小寬度相同的寬度即可。所以,在肖像模式下它將是768,在景觀中它將是1024.它適用於我。