我正在开发一个应用程序,其中有一个水平滚动条。滚动区域由不同的颜色组成[只不过UIImageView
是颜色]。
滚动区域上方是一个画布[也是一个UIImageView
]。
现在,我想要的是,当我在滚动区域中选择任何颜色时,它应该设置在canvas上。
它很像一个颜色选择器,但我已经提供了纯色选项供用户选择。
我应该怎么做?任何让我开始或让我兴奋的示例代码会很棒吗?
谢谢一吨
我正在开发一个应用程序,其中有一个水平滚动条。滚动区域由不同的颜色组成[只不过UIImageView
是颜色]。
滚动区域上方是一个画布[也是一个UIImageView
]。
现在,我想要的是,当我在滚动区域中选择任何颜色时,它应该设置在canvas上。
它很像一个颜色选择器,但我已经提供了纯色选项供用户选择。
我应该怎么做?任何让我开始或让我兴奋的示例代码会很棒吗?
谢谢一吨
轻松实现它。
UIView
不使用UIImageView
UIView
backgroundColor
并放置在卷轴上你可以在你的滚动视图中使用 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;
}
}
我不会按照建议使用 UIImageViews 或 UIViews,而是使用自定义 UIButtons 来选择颜色。
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];
}
初始化然后通过调用此方法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]];
}
您可以在滚动视图中放置一个点击手势,并且每当在滚动中进行点击时,检查点击是否在图像视图上。(您将获得是否在 imageview 上点击点)并根据您可以更改图像。
第二种选择是采用自定义按钮并处理其点击。
希望能帮助到你