iPad中的轮播定位问题

时间:2016-03-12 09:05:16

标签: ios objective-c

我刚刚开始担任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视图没有得到更新的原因是什么?

1 个答案:

答案 0 :(得分:0)

我强烈建议您使用自动布局,它将使您的开发人员生活更轻松。使用自动布局你会忘记这些问题:)有很多开源的自动布局框架,它提供了覆盖功能。我最喜欢的是:

他们有很好的文档和示例,我希望你能快速学习它们。