【问题标题】:iOS image stretches outside of the applicationiOS 图像延伸到应用程序之外
【发布时间】:2012-02-15 03:51:04
【问题描述】:

我的 UIViewController 中有一个 UIImageView。它加载一个原点为 0x20 的 81x37 图像。我要做的是创建该图像作为我的背景以及徽标。我的意思是当我启动我的应用程序时,我希望图像包含整个屏幕,一旦我加载了所有数据并准备好向用户显示,我想将它缩小为只是一个图标屏幕的左上角。我想说调整大小的代码有效,但是它似乎拉伸了图像并将其切断了大约一半。所以要么是在屏幕尺寸之外渲染,要么只渲染它可以渲染的内容。

下面是我如何处理我的框架调整大小的代码 sn-p,它在我的 viewDidLoad 和我的 isReady 函数中完成。

- (void) viewDidLoad
{
    originalSize = CGRectMake(self.logoImage.frame.origin.x, self.logoImage.frame.origin.y, self.logoImage.frame.size.width, self.logoImage.frame.size.height);
    fullScreenSize = CGRectMake(0.0, 0.0, [[UIScreen mainScreen] bounds].size.width, [[UIScreen mainScreen] bounds].size.height);
    [self.logoImage setFrame:fullScreenSize];
}

- (void)isReady:(BOOL)initialized
{
    if(initialized)
    {
        [self.logoImage setFrame:self.originalSize];
    }
    else
    {
        [self.logoImage setFrame:self.fullScreenSize];
    }
}

【问题讨论】:

  • @Damo 在你提到方向之后,我确保检查全屏尺寸值,然后我需要我的宽度 == screenHeight 和我的高度 == screenWidth。必须有更好的方法让硬件根据它的方向告诉我尺寸,而不是翻转宽度和高度值
  • 不客气 - 如果我有帮助,请给我点赞! ;-)

标签: ios image uiimageview resize


【解决方案1】:

为什么不直接设置 originalSize = self.logoImage.frame 和 fullScreenSize = [[UIScreen mainScreen] bounds]?

无论如何,假设您的 logoImage 是一个 imageView,您是否将 imageView 的 contentMode 设置为 UIViewContentModeAspectFit 或等效?默认情况下,imageViews 不会缩放图像。

【讨论】:

  • 如何设置内容模式?这是在 IB 中完成的还是在代码中完成的?
【解决方案2】:

我要感谢达摩回答我的问题。答案就在 cmets 中。

这是达摩的回答——

您是否检查了 fullScreenSize 以查看它是否是帧 设置为,实际上方向正确;即“拉伸图像和 把它剪掉一半”听起来像它有一个风景画框 应该有一个纵向框架(反之亦然)。如果是这样看 以获得更好的方法来确定框架。

【讨论】:

    猜你喜欢
    • 2015-10-18
    • 1970-01-01
    • 2021-01-07
    • 2021-02-25
    • 2020-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多