【问题标题】:Odd background image resizing on animating UIView奇怪的背景图像在动画 UIView 上调整大小
【发布时间】:2010-06-10 23:56:08
【问题描述】:

我在用作游戏区的视图中间有一个 UIView(在 2d 可可视图中)。 此图像具有与视图相同大小的背景图像。 调整视图大小我使用动画使其看起来平滑(效果很好)。但是,当动画开始时,背景图像会立即改变大小、平铺或被剪裁到动画结束时背景图像物理大小相同的大小。

我不希望这样,我希望图像始终适合视图,无论视图大小如何。

    UIImage *bgImage = [UIImage imageNamed:@"head.png"];
... // resize the image returning another image
self.view.backgroundColor = [[UIColor alloc] initWithPatternImage:resizedImage];
[UIView beginAnimations:@"resizeView" context:nil];
[UIView setAnimationDuration:.5];
int localViewSize = ... // work out view sizes
self.view.frame = CGRectMake(... ,localViewSize,localViewSize); 
[UIView commitAnimations];

它看起来很奇怪,因为它跳转到不同的大小,然后动画到原始大小。

我猜也许我必须在主视图下创建一个单独的视图,但这是唯一的方法吗?

【问题讨论】:

    标签: iphone uiview core-animation


    【解决方案1】:

    我怀疑“图案图像”被渲染到图层内容(实际上是纹理),并且图层内容被拉伸以适应。解决这个问题的简单方法是设置self.contentMode = UIViewContentModeCenter 左右;请记住,当您的视图扩大时,这会起作用,但当您的视图缩小时,可能会显示空白边框。

    【讨论】:

    • 所以内容被调整大小以适应新视图然后动画发生?我将尝试中心内容模式,尽管理想情况下我希望背景图像以任何缩放比例占据整个视图。谢谢
    • 如果图片足够大,只需在 UIImageView 中使用正确内容模式的图片并设置 clipsToBounds=YES。
    • 我暂时决定换一种方式,因为效果不好!
    猜你喜欢
    • 1970-01-01
    • 2016-08-25
    • 2014-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-09
    • 1970-01-01
    • 2011-06-21
    相关资源
    最近更新 更多