我一直在尝试设置一个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
方法而且没有更好的方法。
答案 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];
}
这使得过渡看起来更好。
希望这有助于某人。如果有人有更好的想法,请随时回答这个问题!
谢谢! =)