如何缩小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];
结果不是我所期望的。原始的.png图像高约100像素,它们不按比例缩小以适应分段控件的32像素高度。这导致分段控制被绘制成与其重叠的巨大图像:
如何告诉控件缩小这些图像?
答案 0 :(得分:19)
你永远不应该使用" big"图像只显示一个小图片。完整的图像将被加载到内存中,并且只会显示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];
答案 1 :(得分:1)
在swift3中,
<section id="mySection"> Hello </section>