gpt4 book ai didi

image - UISegmentedControl 图像缩放

转载 作者:可可西里 更新时间:2023-11-01 03:05:39 24 4
gpt4 key购买 nike

如何缩小 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 像素高度。这会导致绘制一个分段控件,并在其上重叠大量图像:

screen shot

我如何告诉控件缩小这些图像?

最佳答案

您永远不应该使用“大”图像来显示小图片。整个图像将加载到内存中,并且只会显示其像素的 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];

关于image - UISegmentedControl 图像缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4896513/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com