我正在尝试将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);
}
}
renderMyView
在didLoad
和didRotate
上执行。
首次viewDidLoad
在纵向和横向上效果很好,但如果我旋转设备,pageControl
会出现在不同的x != 200
中。
我也试过了pageControl.center
,但它没有用。
如何保持集中化?
答案 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;
或者您也可以在界面构建器中执行此操作。