2014-12-18 5 views
0

Я не лучший графический дизайнер, но вам нужно настроить несколько значков. Я сделал их с gimp с такими параметрами, как Border и т. Д. Все они созданы в 1000x1000px и используются в объектно-c-коде в UIImageView.Objective-c UIImage Плохое качество изображения

Мне интересно, почему измененный значок выглядит так ужасно. Какие-либо предложения?

В приложении: http://s14.postimg.org/k2g9uayld/Screen_Shot_2014_12_18_at_11_22_53.png http://s14.postimg.org/biwvwjq8x/Screen_Shot_2014_12_18_at_11_23_02.png

Исходное изображение:

не можете больше, чем 2 ссылки так: s17.postimg.org/qgi4p80an/fav.png

Я не думаю, что имеет значение

UIImage *image = [UIImage imageNamed:@"fav.png"]; 
image = [UIImage imageWithCGImage:[image CGImage] scale:25 orientation:UIImageOrientationUp]; 
self.navigationItem.titleView = [[UIImageView alloc] initWithImage:image]; 

Но одно из изображений было создано в раскадровке и эффект тот же.

+0

Вы не уважаете фактическое разрешение устройств iOS, вы должны создать все значки в соответствующих разрешениях, подобных этому http://www.iosres.com/, а также не забывать сокращения 1x, 2x и 3x в вашем Я думаю, что у вас есть только fav.png, где требуется изображение [email protected], которое будет автоматически выбрано os для отображения на устройствах сетчатки. У нас есть новое разрешение 3 для устройств iPhone 6 Plus, поэтому вам понадобится [email protected], чтобы он выглядел отлично. – iphonic

+0

Когда вы используете i'mageNamed', вы даете ему имя, а не имя файла. Комментарий выше описал остальное. – Andy

+0

Вторая линия со шкалой безумна, вместо этого создайте искусство с правильными размерами. – Andy

ответ

-1

Чтобы избежать такого поведения, я предлагаю вам создавать SVG вместо png-файлов. Используя lib SVGKit, вы можете изменить его размер до вашего сердечного содержимого. Поскольку формат SVG является векторным форматом, в вашем масштабировании не будет потерь. https://github.com/SVGKit/SVGKit

EDIT: Чтобы добавить к этому решению, ваш файл PNG в 1000X1000px должен быть очень тяжелым, с другой стороны, SVG-файл представляет собой текстовый файл, так что делает его очень легким

+0

Это единственный возможный способ? Мне просто нужно настроить несколько значков, я определенно буду использовать их в следующем проекте. – dansr23

+1

Я думаю, что более простой способ обойти это - сделать меньшие изображения, чтобы масштабирование не было таким болезненным, как сейчас должно быть для CPU. вы пытаетесь обеспечить размер разных изображений и смотреть результаты? – MaxouMask

+0

Не имеет никакого отношения к оригинальному вопросу – Andy

0
[self.favO.layer setMinificationFilter:kCAFilterTrilinear]; 
    [self.favO setImage:[self resizeImage:[UIImage imageNamed:@"fav.png"] newSize:CGSizeMake(35,35)] 
         forState:UIControlStateNormal]; 

- (UIImage *)resizeImage:(UIImage*)image newSize:(CGSize)newSize { 
    CGRect newRect = CGRectIntegral(CGRectMake(0, 0, newSize.width, newSize.height)); 
    CGImageRef imageRef = image.CGImage; 

    UIGraphicsBeginImageContextWithOptions(newSize, NO, 0); 
    CGContextRef context = UIGraphicsGetCurrentContext(); 

    CGContextSetInterpolationQuality(context, kCGInterpolationHigh); 
    CGAffineTransform flipVertical = CGAffineTransformMake(1, 0, 0, -1, 0, newSize.height); 

    CGContextConcatCTM(context, flipVertical); 
    CGContextDrawImage(context, newRect, imageRef); 

    CGImageRef newImageRef = CGBitmapContextCreateImage(context); 
    UIImage *newImage = [UIImage imageWithCGImage:newImageRef]; 

    CGImageRelease(newImageRef); 
    UIGraphicsEndImageContext(); 

    return newImage; 
} 

Эта фиксированная проблема. Эта проблема возникает, когда UIImageView позаботится об изменении размера.

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