2010-11-12 4 views
2

У меня есть UITableView с набором UITableViewCell s в нем - каждая из ячеек содержит UIView, которая показывает некоторые графики в контексте. Что было бы лучшим способом экспортировать эти ячейки в один UIImage?Экспорт пользовательских UITableViewCells в UIImage

Благодаря

редактировать 1: Я знаю, как создать изображение из видимой области таблицы, но эта таблица свитка из экрана, и я хотели бы создать UIImage все клетки, не только те, кого вы видите.

+0

Это одноразовая вещь для отладки/маркетинга или что-то, что пользователи должны будут сидеть при использовании приложения? Сколько будет клеток? – Anna

+0

Это будет функция в приложении. мы говорим о 4 (?) ячейках, каждый из которых составляет 200 пикселей или около того. Я думаю, это будет довольно быстро, если это сработает. – shul

ответ

3

Вы должны быть в состоянии сделать это, указав слой вида на рисование в пользовательский графический контекст, а затем создав растровое CGImage из этого контекста. Когда у вас есть CGImage, вы можете создать UIImage из него. Это выглядело бы примерно так:

// Create a bitmap context. 
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); 
CGContextRef bitmapContextForCell = CGBitmapContextCreate(nil, cell.bounds.size.width, cell.bounds.size.height, 8, 0, colorSpace, kCGImageAlphaNone); 
CGColorSpaceRelease(colorSpace); 

// Draw the cell's layer into the context. 
[cell.layer renderInContext:bitmapContextForCell]; 

// Create a CGImage from the context. 
CGImageRef cgImageForCell = CGBitmapContextCreateImage(bitmapContextForCell); 

// Create a UIImage from the CGImage. 
UIImage * cellImage = [UIImage imageWithCGImage:cgImageForCell]; 

// Clean up. 
CGImageRelease(cgImageForCell); 
CGContextRelease(bitmapContextForCell); 

Вот как создать изображение для каждой ячейки. Если вы хотите создать одно изображение для всех своих ячеек, используйте таблицу вместо ячейки.

+0

Привет, спасибо за помощь. Я попробовал это для таблицы и получил то, что у меня есть прямо сейчас, - отображается только таблица с просмотром (она прокручивается за пределы экрана). – shul

+0

Ну, вам может быть трудно получить его, чтобы нарисовать все ячейки для всей таблицы, потому что UITableView не создает все ячейки раньше времени. Это создает их только по требованию, когда они прокручиваются. Поэтому, если какой-либо конкретный момент вы должны были спросить UITableView, чтобы привлечь все его ячейки, он не будет иметь их для вас. Возможно, вы должны спросить своего контроллера табличного представления для всех ячеек в таблице, создать образ для каждого из них, затем нарисовать все изображения в один растровый контекст и сделать изображение из этого. – Ryan

+0

thnx, будет явно называть drawrect на каждом из трюков? – shul

Смежные вопросы