Никогда не используйте «большое» изображение, чтобы отображать только маленькое изображение. Полное изображение будет загружено в память, и будет отображаться только 10% его пикселей, поэтому вы будете использовать много памяти даром.
Что вы можете сделать, если действительно хотите использовать этот ресурс, - это создать миниатюру с кодом ранее и использовать этот новый сгенерированный эскиз.
Следующий метод возвращает новое изображение, которое вы можете использовать в вашем UISegmentedControl, и вы можете выпустить большое.
- (UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize {
UIGraphicsBeginImageContext(newSize);
[image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
С вашим кодом:
UISegmentedControl * segmentButton;
segmentButton = [UISegmentedControl segmentedControlWithItems: [NSArray arrayWithObjects:
[self imageWithImage:[UIImage imageNamed:@"option_one.png"] scaledToSize:CGSizeMake(32, 32)],
[self imageWithImage:[UIImage imageNamed:@"option_two.png"] scaledToSize:CGSizeMake(32, 32)],
nil]];
segmentButton.contentMode = UIViewContentModeScaleToFill;
segmentButton.frame = CGRectMake(10, 10, 200, 32);
[view addSubview:segmentButton];