【问题标题】:UIView background image gets squashedUIView 背景图像被压扁
【发布时间】:2011-05-07 11:24:31
【问题描述】:

在我的 iPhone 应用程序中,我有一个 UIView,其中包含通过 view.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"IndexCard.png"]]; 创建的平铺背景图像

在我的 iOS3.1 设备上,当视图调整大小时,背景图像会被压扁 - 即它平铺相同的次数,但每个平铺的高度会降低。相反,我希望每个图块保持相同的大小,但重复次数要根据新的视图大小进行调整。如果我清除背景然后重置它,问题就会得到解决,但这似乎是解决问题的一个特别低效的解决方案。在iOS4.3模拟器上可以正常运行。

这是原始图像 - 12 行:

这是我在调整视图大小时看到的 - 它仍然有 12 行:

而这是我真正想看到的 - 背景将被裁剪为 5 行:

有什么想法吗?

【问题讨论】:

    标签: iphone iphone-sdk-3.0 ios-3.x


    【解决方案1】:

    视图的backgroundColor 属性为CALayer 指定颜色(或图案),这是绘制视图的基础。您可以通过寻址视图的 layer 属性来更改 CALayer 的属性。

    查看CALayer Class Reference,我看到有一个名为contentsGravity 的属性:

    确定接收者的内容如何 位于其范围内。

    表示:

    contentsGravity 的可能值显示在“Contents Gravity Values”中。默认值为kCAGravityResize

    这就解释了为什么你的图片会被这样压扁:默认情况下它会调整图片的大小。查看其他 Contents Gravity Values 有几个选项可能最适合您:

    kCAGravityTop: 内容在边界矩形的上边缘水平居中。

    kCAGravityCenter:内容在边界矩形中水平和垂直居中。

    'kCAGravityBottom':内容在边界矩形的底部边缘水平居中。

    我猜kCAGravityTop 可能是您要查找的内容,因此您可以像这样设置视图层的contentsGravity

    view.layer.contentsGravity = kCAGravityTop;
    

    【讨论】:

      【解决方案2】:

      我找到了一个更简单的解决方案:

      view.contentMode = UIViewContentModeRedraw;
      // instead of the default UIViewContentModeScaleToFill
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-18
        • 1970-01-01
        相关资源
        最近更新 更多