我刚刚开始担任iOS开发人员,目前正致力于为iPhone和iPad上实施的iOS应用程序提供自定义轮播功能。我在iPad上遇到了一个方向问题,当方向发生变化时,旋转木马会被放错位置或消失。
以下是我为执行任务而编写的代码行
-(void)initWithParentView:(UIView *)parentView{
//identifying the size of the screen
CGRect screenSize = [[UIScreen mainScreen]bounds];
//based on the screen size i'm setting the position of the carousel
NavigationCarousel *selfCarousel = [super initWithFrame:CGRectMake(0.0, screenSize.size.height - 110, parentView.bounds.size.width, 55.0)];
//this is the scroll view which will be added as a subview
self.contentView = [[UIScrollView alloc] initWithFrame:CGRectMake(30, 0.0, 260, 55.0)];
//adding the subview
[selfCarousel addSubview: self.contentView];
}
为了识别方向变化,我在调用about方法的类中编写以下代码。
-(void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(OrientationChange:) name:UIDeviceOrientationDidChangeNotification object:nil];
}
-(void)viewWillDisappear:(BOOL)animated{
[[NSNotificationCenter defaultCenter]removeObserver:self name:UIDeviceBatteryLevelDidChangeNotification object:nil];
}
-(void)OrientationChange:(NSNotification*)notification{
UIDeviceOrientation Orientation=[[UIDevice currentDevice]orientation];
if(Orientation==UIDeviceOrientationLandscapeLeft || Orientation==UIDeviceOrientationLandscapeRight)
{
NSLog(@"Landscape");
[self callTheClass];
}
else if(Orientation==UIDeviceOrientationPortrait)
{
NSLog(@"Portrait");
[self callTheClass];
}
}
-(void)callTheClass{
self.carousel = [[NavigationCarousel alloc] initWithParentView:self.view];
self.carousel.delegate = self;
}
当我调试时,我发现屏幕尺寸根据iPad的方向更新,但是旋转木马没有显示在标签上。 启动应用程序后,轮播将根据设备方向显示,并在方向更改时消失。
当方向改变时,iPad视图没有得到更新的原因是什么?
答案 0 :(得分:0)
我强烈建议您使用自动布局,它将使您的开发人员生活更轻松。使用自动布局你会忘记这些问题:)有很多开源的自动布局框架,它提供了覆盖功能。我最喜欢的是:
他们有很好的文档和示例,我希望你能快速学习它们。