e.J*_*mes 8 scaling image uisegmentedcontrol ios
如何缩小图像中使用的图像UISegmentedControl?我正在以编程方式创建分段控件:
UISegmentedControl * segmentButton;
segmentButton = [UISegmentedControl segmentedControlWithItems:
[NSArray arrayWithObjects:
[UIImage imageNamed:@"option_one.png"],
[UIImage imageNamed:@"option_two.png"],
nil]];
segmentButton.contentMode = UIViewContentModeScaleToFill;
segmentButton.frame = CGRectMake(10, 10, 200, 32);
[view addSubview:segmentButton];
Run Code Online (Sandbox Code Playgroud)
结果不是我所期望的.原始的.png图像高约100像素,并且它们没有按比例缩小以适合分段控件的32像素高度.这导致分段控制被绘制成与其重叠的巨大图像:

如何告诉控件缩小这些图像?
Lud*_*dry 19
你永远不应该使用"大"图像来显示一个小图片.完整的图像将被加载到内存中,并且只会显示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;
}
Run Code Online (Sandbox Code Playgroud)
使用您的代码:
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];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10846 次 |
| 最近记录: |