UIPageViewController在我的UIImage的底部创建一个边框以及如何摆脱它

时间:2014-03-26 10:51:03

标签: ios iphone uiimage nsarray uipageviewcontroller

我对UIPageViewControllers比较陌生,刚刚为#34;演练"实现了它。我的应用程序

问题是,我正在显示的每个图像底部都有一个边框,而pageViewIndicators的边是边框,因此,图像不会显示为全屏并且看起来是捆绑在一起的。

我在这里附上一些图片以供参考:

enter image description here

enter image description here

我只是想摆脱这个边框,让pageIndicators在后​​台覆盖全屏图像。此外,当滑动到下一个屏幕时,我不想要图像之间的黑色边框(根据第二个屏幕截图)。

这里有一些代码。我有一个WalkthroughViewController文件,其中包含对正在创建的图像的引用:

- (void)viewDidLoad
{
    [super viewDidLoad];

    [self.view setBackgroundColor:[UIColor clearColor]];
    CGRect insetFrame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
    _imageView = [[UIImageView alloc] initWithFrame:insetFrame];
    _imageView.backgroundColor = [UIColor clearColor];
    [_imageView setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight];
    [_imageView setImage:[UIImage imageNamed:_model.imageName]];
    [[self view] addSubview:_imageView];
}

在我的PageViewController's viewDidLoad中,我有:

- (void)viewDidLoad
{
    [super viewDidLoad];

    [[self view] setBackgroundColor:[UIColor blackColor]];

    _modelArray = [NSMutableArray arrayWithObjects:[[ImageModel alloc] initWithImageName:@"TimelineTut.png"],
                  [[ImageModel alloc] initWithImageName:@"Tut 1.png"],
                [[ImageModel alloc] initWithImageName:@"Tut 2.png"],
                   [[ImageModel alloc] initWithImageName:@"newtut3.png"],
                   [[ImageModel alloc] initWithImageName:@"tut 4.png"],
                   nil];

    _pageViewController = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll
                                                          navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal
                                                                        options:[NSDictionary dictionaryWithObject:[NSNumber numberWithFloat:50.0f] forKey:UIPageViewControllerOptionInterPageSpacingKey]];

    _pageViewController.delegate = self;
    _pageViewController.dataSource = self;

    WalkthroughViewController *imageViewController = [[WalkthroughViewController alloc] init];
    imageViewController.model = [_modelArray objectAtIndex:0];
    NSArray *viewControllers = [NSArray arrayWithObject:imageViewController];

    [self.pageViewController setViewControllers:viewControllers
                                      direction:UIPageViewControllerNavigationDirectionForward
                                       animated:NO
                                     completion:nil];

    [self addChildViewController:_pageViewController];
    [self.view addSubview:_pageViewController.view];

    [_pageViewController didMoveToParentViewController:self];


    //CGRect pageViewRect = self.view.bounds;

   // pageViewRect = CGRectInset(pageViewRect, 0.0, 0.0);
    //self.pageViewController.view.frame = pageViewRect;

}

上面的最后三行被注释掉,但是如果我取消注释它们并保留值,它将保持不变。但是,如果我将0.0更改为40.0之类的东西,那么它可以理解为看起来很长。

我已尝试在ImageRatio中设置AspectFillFitScaleToFillWalkthroughViewController等,但没有摆脱边界。

视图控制器完全是用代码而不是在故事板中创建的,它几乎看起来像这个问题(Putting a bar on the bottom of the UIPageViewController),但我不想要边框,我不认为我&#39 ; m嵌入容器?

更新:

通过更改此行代码中的值:

_pageViewController = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll
                                                      navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal
                                                                    options:[NSDictionary dictionaryWithObject:[NSNumber numberWithFloat:50.0f] forKey:UIPageViewControllerOptionInterPageSpacingKey]];

从50到0,我已经摆脱了图像侧面的空间。然而,底部的边距仍然存在。

如何摆脱黑色边框,但将pageViewIndicators作为叠加层保留在图像上,从而使图像全屏显示而不是因为边框而被压扁?

对此的任何指导都将非常感激。

1 个答案:

答案 0 :(得分:1)

我设法通过此问题How to remove the bottom gap of UIPageViewController

中的选定答案克服了此实施

基本前提是确保我将PageViewController的视图延伸到15,将页面指示器移动到底部。幸运的是我的背景是黑色的(问题上面的紫色图像仅供参考)并且图像看起来不会被压扁。虽然这不是一个理想的解决方案,但它现在可以胜任。