可拉伸和模式UIImage同时

时间:2011-11-15 18:56:35

标签: iphone ios uiimage orientation

我想编写一个架子,我不想考虑在旋转时调整大小和更改背景图像,这取决于屏幕尺寸(iPad / iPhone)。是否可以创建一个水平拉伸但垂直重复的图像? 到目前为止,我只找到[UIColor colorWithPatternImage:][UIImage strechableImageWithLeftCapWidth:topCapHeight:]或新的[UIImage resizableImageWithCapInsets:]。但显然,我无法让他们一起工作。

我希望插图有助于理解我的问题:

Illustration

您是否知道如何完成上述操作,以便它可以针对不同的尺寸和方向使用单个图像?谢谢!

3 个答案:

答案 0 :(得分:3)

我还需要从图像设置UIView背景并同时更改其大小。我做的是:

  1. 在我的视图尺寸框架内创建图像
  2. 使用[UIColor colorWithPatternImage:(UIImage*)]
  3. 设置视图背景

    以下是代码:

    UIGraphicsBeginImageContext(self.followView.frame.size);
    [[UIImage imageNamed:@"background_content.png"] drawInRect:self.followView.bounds];
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    UIColor *bgColor = [UIColor colorWithPatternImage:image];
    
    [followView setBackgroundColor:bgColor];
    

答案 1 :(得分:2)

处理大量行时,

[UIColor colorWithPatternImage:]会占用大量内存。我最终使用[UIColor colorWithPatternImage:]创建了比整个视图大一行的单个图像视图,然后在视图即将滚动到屏幕外时根据需要向上或向下偏移该视图。由于视图仅在行边界处移动,因此性能比我预期的要好得多。

但是,更好的选择是使用UImageViews创建一个单独的[UIColor colorWithPatternImage:]池并对其进行平铺,类似于UITableView表格查看单元格。

Apple提供的示例代码说明了ScrollView Suite示例项目中的此技术以及WWDC 2010中的使用滚动视图设计应用程序视频。

答案 2 :(得分:0)

为什么不使用一个书架的可伸缩图像,然后将其设置为tableview上每个单元格的背景?

编辑:

我对AQGridView的了解有限,但听起来您可以访问每个'网格图块'。

尝试每行三张图片: - 最左侧网格图块的图像,显​​示工具架的左角 - 架子中心部分的图像,应用于除第一个和最后一个图块之外的所有图块 - 最右边网格图块的图像,以显示货架的右角。

此外,您可能应该提到您在问题中使用AQGridView,以便其他用户不会认为您使用的是UITableView