我正在尝试更改UIImageView颜色,颜色更改代码工作正常但我的问题是该方法应该通过文件名动态更改图像的颜色:
更改帧图像:
- (IBAction)fr1:(id)sender {
mainViewCont.frameImage.image = [UIImage imageNamed:@"sf1.png"];
}
- (IBAction)fr2:(id)sender {
mainViewCont.frameImage.image = [UIImage imageNamed:@"sf2.png"];
}
更改色调颜色:
- (IBAction)frameColor:(UISegmentedControl *)sender {
NSString *imageName ;
for( int i = 0; i < 44 ; i++ ) {
imageName = [NSString stringWithFormat:@"sf%d.png",i];
switch (sender.selectedSegmentIndex) {
case 0:
mainViewCont.frameImage.image = [tintImage imageNamed:imageName withColor:[UIColor blackColor]];
break;
case 1:
mainViewCont.frameImage.image = [tintImage imageNamed:imageName withColor:[UIColor whiteColor]];
break;
default:
break;
}
}
}
现在问题只是图像的色调有44个数字(最后一个图像)的变化!!当我按第24帧时,它无法识别帧图像是24号。
答案 0 :(得分:2)
在你的循环中,你将设置UIImageView的image属性44次。这意味着您只能看到最后一张图片。您只需要更改已设置为图像的图像的颜色。
您应该向ViewController添加两个实例变量。 imageTintColor
和imageName
。
您必须添加名为configureView
的方法,该方法会使用imageName
加载图片并设置其tintColor
。
在您的IBAction中选择图像,您可以在imageName
中保存图像的名称并调用configureView
。在segmentedControl操作中,您可以在imageTintColor
中保存所选颜色并调用configureView
。
基本上是这样的:
- (void)configureView {
UIImage *image = [tintImage imageNamed:self.imageName withColor:self.imageTintColor];
_frame.image = image;
}
- (IBAction)img1:(id)sender {
self.imageName = @"sf1.png";
[self configureView];
}
- (IBAction)img2:(id)sender {
self.imageName = @"sf2.png";
[self configureView];
}
- (IBAction)img3:(id)sender {
self.imageName = @"sf3.png";
[self configureView];
}
- (IBAction)changeColor:(UISegmentedControl *)sender {
NSString *imageName ;
for( int i = 1; i <= 3 ; i++ ) {
imageName = [NSString stringWithFormat:@"sf%d.png",i];
switch (sender.selectedSegmentIndex) {
case 0:
self.imageTintColor = [UIColor blackColor];
break;
case 1:
self.imageTintColor = [UIColor whiteColor];
break;
default:
break;
}
}
[self configureView];
}