我试图通过读取imageview的像素来制作颜色选择器。现在我在后台有一个imageview并从中检索像素颜色。
但是现在我想要改变我的UI,所以需要帮助我应该如何制作这个UI
这就是我认为这样的事情 UIView-> n no of。 Imageview和箭头将位于其上方。
但是有些事我不确定我会怎么做
答案 0 :(得分:1)
以下是我对如何处理此问题的建议,
为a中的每个图像创建图像列表和颜色值 NSDictionary喜欢,
NSDictionary *colors = @{[UIColor redColor]: [UIImage imageNamed:@"red"], [UIColor greenColor]: [UIImage imageNamed:@"green"], [UIColor yellowColor: [UIImage imageNamed:@"green"]]}
然后创建imageview并将图像添加到视图中,并为每个imageView添加点击手势识别器;
UIView *parentView = self.parentView;
CGFloat knobHeight = 20;
CGFloat colorViewHeight = 20;
CGFloat colorViewWidht = 20;
int index = 0;
for(UIColor *color in colors){
CGRect frame = CGRectMake(index * colorViewWidth, knobHeight, colorViewWidth, colorViewHeight);
UIImageView *imageView = [[UIImageView alloc] initWithFrame: frame];
imageView.image = colors[color];
[parentView addSubView:imageView];
UITapGestureRecognizer *tapGestureRecognizer = [UITapGestureRecognizer alloc] initWithTarget: self selector:@selector(tappedImage:)];
imageView.userInteractionEnabled = YES;
[imageView addGestureRecognizer: tapGestureRecognizer];
}
最初将旋钮添加到第一个imageView;
UIImageView *firstImageView = [[parentView subView] firstObject];
CGRect knobFrame = CGRectMake (CGRectGetMidX(firstImageView.frame) - knobWidth / 2, 0, knobWidth, knobHeight);
UIImageView *knobImageView = [[UIImageView alloc] initWithFrame:knobFrame];
[parentView addSubview: knobImageView];
然后,在分接选择器中,您可以将旋钮更改设为动画;
- (void)tappedImage:(UITapGestureRecognizer*)tap{
UIImageView *tappedImageView = tap.view;
CGRect newKnobFrame = CGRectMake((CGRectGetMidX(tappedImageView.frame) - knobWidth / 2, 0 , knobWidth, knobHeight);
[UIView animateWithDuration:2.0 animations:^{
knobImageView.frame = newKnobFrame;
}];
}
您还可以跟踪要锁定选择的颜色。然后,不要为这些图像启用userInteraction,也不要添加手势识别器。您可以设置alpha值以显示无法选择它。
此代码是直接输入的,但它应该让您大致了解它是如何工作的。