我正在开发一个应用程序,其中我有一个水平滚动条。
卷轴区域包含不同的颜色[颜色只有UIImageView
颜色]。
滚动区域上方是画布[也是UIImageView
]。
现在,我想要的是当我在滚动条区域中选择任何颜色时,它应该设置在画布上。
它非常像颜色选择器,但我已经提供了由用户选择的纯色选项。
我应该怎么做?任何示例代码让我开始或我的思绪踢得很棒?
Thanx一吨
答案 0 :(得分:3)
轻松实现。
UIView
而非UIImageView
UIView
backgroundColor
并将其放在滚动答案 1 :(得分:2)
您可以在scrollView中使用UIButtons而不是UIImageViews来显示要拾取的颜色。
这将使实施更容易。用户将选择任何颜色按钮,您将在按钮操作选择器方法中收到回调。然后根据按钮标签或任何属性,您可以为画布设置颜色。
在当前的实现中,它将是棘手的,因为您需要知道完成点击的确切内容偏移量,以确定按下了哪个UIImageView。
编码步骤:
在滚动视图中添加UIButtons而不是UIImageView,如:
UIButton* button = [[UIButton alloc] initWithFrame:someRect];
//put some tag to button
button.tag = someInt;
//add selector to each button to get callback
[view addTarget:self action:@selector(btnSelected:) forControlEvents:UIControlEventTouchUpInside];
[scrollView addSubview:button];
在btnSelected方法中输入以下代码:
-(IBAction)btnSelected:(id)sender;
{
UIButton* button = (UIButton*) sender;
if (button.tag == someInt) {
//do something like
canvas.backgroundColor = button.backgroundColor;
}
}
答案 2 :(得分:1)
我没有按照建议使用UIImageViews或UIViews,而是使用自定义UIButton来挑选颜色。
UIButton * colorButton;
//You will probably do these inside a for loop
colorButton = [UIButton buttonWithType:UIButtonTypeCustom];
[colorButton setFrame:CGRectMake(X, Y, buttonSize, buttonSize)];
[colorButton setTitle:@"" forState:UIControlStateNormal];
[colorButton setBackgroundColor:SOME_COLOR];
//Border visualization would be good if you are putting buttons side-by-side
[colorButton.layer setBorderWidth:1.0];
[colorButton.layer setBorderColor:[[UIColor darkGrayColor] CGColor]];
//You can use this tag to identify different buttons later
[colorButton setTag:INDEX+SOME_OFFSET]; //use loop index with some offset
[colorButton addTarget:self action:@selector(colorButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
-(void) colorButtonPressed:(UIButton *) sender
{
UIColor *selectedColor = sender.backgroundColor; //Or identify with sender.tag
[yourCanvas doSmtOnCanvas:selectedColor];
}
答案 3 :(得分:1)
初始化UIImageView
,然后通过调用此方法为所有imageViews
添加手势识别器。
- (void) setupImageView : (UIImageView *) imageView{
[imageView setUserInteractionEnabled:YES];
UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(changeUIImageViewBackgroundColor:)];
tapGestureRecognizer.numberOfTapsRequired = 1;
[imageView addGestureRecognizer:tapGestureRecognizer];
}
现在通过以下方式更改选择器中canvasView
的颜色:
- (void) changeUIImageViewBackgroundColor : (UITapGestureRecognizer *) recognizer{
UIImageView *imageView = (UIImageView *)[recognizer view];
[canvasView setBackgroundColor:[imageView backgroundColor]];
}
答案 4 :(得分:0)
您可以在滚动视图中放置一个点击手势,每当在滚动条中点击一下,检查点击是否在图像视图上。 (您将获得是否在图像视图上的点击点)并根据您可以更改图像。
第二种方法是采取自定义按钮并处理其点击。
希望有所帮助