方向更改后中心UIPageControl

时间:2011-09-20 11:57:37

标签: objective-c ios4 uipagecontrol

我正在尝试将UIPageControl集中在纵向和横向模式中,但它无法正常工作,x会在设备旋转后发生变化。

@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,但它没有用。

如何保持集中化?

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

可能是一个非常古老的问题,但我会分享我的方式来集中UIPageControl。只需将UIPageControl的宽度设置为与视图边界大小宽度相同的宽度即可。因此,在纵向模式下,它将是768,在风景中它将是1024.它适用于我。

答案 2 :(得分:0)

在代码中设置UIView autoresizingMask:

pageControl.autoresizingMask = UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleLeftMargin;

或者您也可以在界面构建器中执行此操作。