我正在尝试更改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。
在循环中,您将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];
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句