2013-04-26 6 views
1

Iam, разрабатывающий одно приложение. В этом я хочу установить фон uiview как image.That размер изображения 1,6 mb.I следовал ниже код.Загрузка изображения UIview с использованием изображения

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

Но это занимает больше времени по сравнению с небольшим размером image.So пожалуйста, помогите мне, как загрузить размер 3mb изображения также как и в качестве небольшого размера изображения.

+1

Вы можете оптимизировать размер изображения с помощью инструмента ImageOptim – Felix

+0

Просто я изменил файл CompressPNG на NO в сборках settings.Then также потребуется больше времени для загрузки , – venkat

ответ

1

Вы могли бы сделать операции рисования на фоне очереди, так что он не замерзнет интерфейс:

CGRect imgRect = self.view.bounds; 
dispatch_async(dispatch_get_global_queue(0, 0), ^{ 
    UIGraphicsBeginImageContext(imgRect.size); 
    [[UIImage imageNamed:@"image.png"] drawInRect:imgRect]; 
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    UIColor* bgcolor = [UIColor colorWithPatternImage:image]; 
    dispatch_async(dispatch_get_main_queue(), ^{ 
     self.view.backgroundColor = bgcolor; 
    }); 
}); 

оптимизировать также изображение с помощью инструмента ImageOptim.

+0

Оптимизация изображения означает, что я могу сделать? – venkat

+0

ImageOptim оптимизирует изображения, чтобы они занимали меньше места на диске и загружались быстрее. Просто перетащите файл изображения в окно. – Felix

+0

Но я получаю изображения с сервера. – venkat

0

Лучшее, если вы resizeimage, а затем добавьте в Application bundle, чтобы выполнить быстрее.

здесь я думаю, что есть no need получить image во-первых, для resizing для UIView s pattern image в background.

Вы можете solve memory issue так:

NSString *imgfile = [[NSBundle mainBundle] pathForResource:@"image" ofType:@"png"]; 
UIImage *currentImage = [UIImage imageWithContentsOfFile:imgfile]; 
self.view.backgroundColor = [UIColor colorWithPatternImage:currentImage]; 

См ios-imagenamed-vs-imagewithcontentsoffile ссылку.

EDIT: Используйте @ phix23 ответ для плавного UI

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