以编程方式设置图像视图而无需用户看到它的变化?

时间:2015-01-09 00:32:52

标签: ios uiimage tablefooterview

我一直在尝试设置一个imageView,而无需用户在从横向模式旋转到纵向模式时看到它。

willAnimateRotationToInterfaceOrientation方法中,我将图像重新设置为适当的图像(取决于它是否处于横向模式或纵向模式:

if (UIInterfaceOrientationIsLandscape(toInterfaceOrientation)) {
    NSLog(@"Going to Portrait Mode.");

    UIImage *footerImage = [UIImage imageNamed:@"SchoolImageLandscape.png"];
    UIImageView *fView = [[UIImageView alloc] initWithImage:footerImage];
    [self.tableView setTableFooterView:fView];



} else if (UIInterfaceOrientationIsPortrait(toInterfaceOrientation)) {
    NSLog(@"Portrait Mode");
    UIImage *footerImage = [UIImage imageNamed:@"SchoolImage.png"];
    UIImageView *fView = [[UIImageView alloc] initWithImage:footerImage];
    [self.tableView setTableFooterView:fView];
}

但是,我在确定如何在用户看不到更改的位置时遇到一些问题。旋转时的含义您看到较大的图像变为较小的图像。我不想要这个。

有谁知道如何使转换更加用户友好?我也尝试过设置imageView didRotateFromInterfaceOrientation方法而且没有更好的方法。

1 个答案:

答案 0 :(得分:0)

好的,我不知道是否有更好的方法可以做到这一点。

我做了什么:

willAnimateRotationToInterfaceOrientation方法中,我通过执行以下操作隐藏了tableFooterView:

if (UIInterfaceOrientationIsPortrait(toInterfaceOrientation)) {
    // hide the footer image so that the user doesn't see
    // the image go from large image (landscape) to a smaller image
    self.tableView.tableFooterView.hidden = YES;

}

然后在didRotateFromInterfaceOrientation方法中,我决定

if (UIInterfaceOrientationIsLandscape(fromInterfaceOrientation)) {
    NSLog(@"Going to Portrait Mode.");

    UIImage *footerImage = [UIImage imageNamed:@"SchoolImage.png"];
    UIImageView *fView = [[UIImageView alloc] initWithImage:footerImage];

    [self.tableView setTableFooterView:fView];

    // unhide the footer
    self.tableView.tableFooterView.hidden = NO;

    // set the alpha to 0 so you can't see it immediately
    fView.alpha = 0.0f;

    // Fade in the image
    [UIView transitionWithView:fView
                      duration:1.0f
                       options:0
                    animations:^{
                        fView.alpha = 1.0f;
                    } completion:nil];

}

这使得过渡看起来更好。

希望这有助于某人。如果有人有更好的想法,请随时回答这个问题!

谢谢! =)