2011-11-15 71 views
7

我想編碼一個架子,我不想考慮調整大小和更改背景圖像的旋轉和取決於屏幕大小(iPad/iPhone)。是否有可能創建一個圖像,這將水平拉伸,但重複垂直? 現在,我只找到了[UIColor colorWithPatternImage:][UIImage strechableImageWithLeftCapWidth:topCapHeight:]或新的[UIImage resizableImageWithCapInsets:]。但顯然,我沒有設法讓他們一起工作。同時可伸縮和圖案UIImage

我希望插圖幫助理解我的問題:

Illustration

你有任何想法如何完成上述,使之與不同尺寸和方向單個圖像工作?謝謝!

+0

只是出於好奇, '[UIColor colorWithPatternImage:[UIImage resizableImage ...]]'會得到什麼樣的結果? –

+0

圖像未被拉伸或調整大小,只是在x和y上重複。 – denbec

+0

雜誌下的漂亮陰影:)他們是否繪製過或使用過CA? – Shmidt

回答

2

[UIColor colorWithPatternImage:]在處理大量行時會佔用極大的內存量。我最終使用[UIColor colorWithPatternImage:]創建了比整個視圖大一行的單個圖像視圖,然後在視圖即將滾動離屏時根據需要向上或向下偏移該視圖。由於視圖僅在行邊界移動,因此性能比我預期的要好得多。

但是,更好的選擇是使用[UIColor colorWithPatternImage:]創建個人UImageViews的池並對它們進行拼貼,類似於UITableView會對錶格視圖單元格做的操作。

蘋果有它說明了滾動套房樣本項目和設計應用程序與滾動距離WWDC 2010

0

視圖的視頻爲什麼不使用一個架子的拉伸圖像,然後將其設置爲背景的這種技術的示例代碼爲tableview上的每個單元格?

編輯:

我的AQGridView知識是有限的,但聽起來像是你可以得到進入每一個人的網格貼磚「。

每行有三個圖像嘗試: - 因爲這是適用於所有的瓷磚除了第一個貨架的中心部分的圖像 - 從最左側網格貼磚,以顯示您的書架 的左上角的圖像和最後一個圖塊 - 最右側圖塊顯示圖塊右側的圖像。

此外,您應該提及您在您的問題中使用AQGridView,以便其他用戶不會認爲您使用的是UITableView

+0

因爲我使用網格單元格[AQGridView](https://github.com/AlanQuatermain/AQGridView)而不是行... :( – denbec

3

我還需要從圖像設置UIView背景並同時更改其大小。我所做的是:

    使用 [UIColor colorWithPatternImage:(UIImage*)]

這裏是代碼

  • 設置視圖背景
  • 創建我的看法大小的框架內圖像:

    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];