水平拾色器的UI帮助

时间:2014-05-12 11:37:56

标签: ios objective-c uiview uiimageview

我试图通过读取imageview的像素来制作颜色选择器。现在我在后台有一个imageview并从中检索像素颜色。

但是现在我想要改变我的UI,所以需要帮助我应该如何制作这个UI

enter image description here

这就是我认为这样的事情 UIView-> n no of。 Imageview和箭头将位于其上方。

但是有些事我不确定我会怎么做

  1. 我必须保持一些颜色解锁,因为水平交叉颜色会解锁
  2. 旋钮不应超出界限
  3. 我必须从箭头边缘检索颜色,以便获得正确的像素值

1 个答案:

答案 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值以显示无法选择它。

此代码是直接输入的,但它应该让您大致了解它是如何工作的。