我使用UICollectionViewCell
嘗試打印右上角的數字(從核心數據存儲獲得)以顯示產品更新的數量。核心圖形上下文似乎沒有返回圖像
隨着細胞被再利用的方式,我發現如果使用代碼繪製成UIView
層(使用的CALayer)中,當該單元被重複使用,CALayer
遺體並且通過錯誤的產品出現。顯然,根據SO上的其他帖子,添加子視圖到單元格不是一個聰明的事情,因爲它們被重用等。
所以,我試圖創建一個圖像使用核心圖形(在一個單獨的方法)和將圖像顯示在容器UIImageView
中。在教程之後,我似乎無法獲得圖像返回。
我正在做電話爲:
cell.messageCount.image = [self messageImageInRect:CGRectMake(48.0, 1.0, 21.0, 21.0)];
的方法是:
-(UIImage *)messageImageInRect:(CGRect)rect {
UIGraphicsBeginImageContextWithOptions(rect.size, NO, 0);
CGContextRef context = UIGraphicsGetCurrentContext();
NSLog(@"I am inside");
NSLog(@"I have rect as: %@", NSStringFromCGRect(rect));
NSLog(@"I have the size as: %@", NSStringFromCGSize(rect.size));
NSLog(@"I have the context as: %@", context);
CGContextSetLineWidth(context, 2.0f);
CGContextAddEllipseInRect(context, rect);
CGContextSetStrokeColorWithColor(context, [UIColor whiteColor].CGColor);
CGContextSetFillColorWithColor(context, [UIColor redColor].CGColor);
CGContextFillPath(context);
CGContextStrokePath(context);
UIImage *testImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return testImage;
}
這似乎是很基本的。
NSLog語句有助於試圖弄清楚發生了什麼。但是,根據日誌,它似乎工作,但是,我沒有圖像被返回(或至少顯示)。我不知道爲什麼。
日誌顯示:
2014-01-19 18:06:02.753 XXXXXXXX[62921:70b] I am inside
2014-01-19 18:06:02.754 XXXXXXXX[62921:70b] I have rect as: {{48, 1}, {21, 21}}
2014-01-19 18:06:02.754 XXXXXXXX[62921:70b] I have the size as: {21, 21}
2014-01-19 18:06:02.754 XXXXXXXX[62921:70b] I have the context as: <CGContext 0x10f133640>
2014-01-19 18:06:02.754 XXXXXXXX[62921:70b] I have test Image size as: {21, 21}
隨着messageCount被在UICollectionViewCell定義。
正如往常一樣,這一直是約3小時我的時間,看完教程後教程和SO響應後SO響應和編程手冊...
任何幫助,將不勝感激。
您是救命的人!謝謝。 「CGContextDrawPath」令人遺憾的一個新手錯誤 - 我從早期的嘗試中刪除了它。用'rect.origin'的東西,我假設這會把我提供的'rect'的座標移動到我想要繪製的'rect'上? – Darren
對,我想你明白了。 –