Xcode:如何揭示programaticaly png图像

时间:2015-11-11 23:33:45

标签: objective-c uiscrollview gps

我必须制作速度计。 我有一个速度条(png文件),我想在gps速度变化时重新调整。

speed bar

示例...最大速度设置为100(km / h)。 当我以50公里/小时的速度行驶时,酒吧可以看到50%。 我以40公里/小时的速度向我展示了40%的酒吧。

我想将图像放在速度条图像上方,并根据gps速度隐藏第一张图像。

1 个答案:

答案 0 :(得分:0)

您可以使用简单的黑客来实现此效果。您可以在另一个ImageView内包含UIView。为Autolayout Constraints的前导,上下空间提供ImageView。不要添加尾随空间约束。现在,当您更改UIView的宽度时,您可以根据输入看到图像显示。

这是结构:

enter image description here

和自动布局约束:

1)SpeedoHolder:
enter image description here

2)CoverView:
enter image description here

3)的ImageView:
enter image description here

现在连接viewController.h中的所需插座。我使用滑块进行演示:

//Trailing space constraint of CoverView
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *trailingSpaceConstraint;

@property (weak, nonatomic) IBOutlet UISlider *slider;

@property (weak, nonatomic) IBOutlet UIView *speedoHolder;

- (IBAction)sliderValueChanged:(id)sender;

现在实施:

- (IBAction)sliderValueChanged:(id)sender {
  CGFloat newVal = self.slider.value;

  self.trailingSpaceConstraint.constant = self.speedoHolder.frame.size.width * (1-newVal);

  [self.view setNeedsUpdateConstraints];
  [self.view layoutIfNeeded];
}

PS:别忘了在Clips Subviews中为CoverView启用Attributes Inspector

更新:您可以通过修改trailingSpaceConstraint.constant的值来微调隐藏。即如果您有最高速度和当前(GPS)速度,请执行以下操作:

self.trailingSpaceConstraint.constant = self.speedoHolder.frame.size.width * (gpsSpeed / maxSpeed);