我必须制作速度计。 我有一个速度条(png文件),我想在gps速度变化时重新调整。
示例...最大速度设置为100(km / h)。 当我以50公里/小时的速度行驶时,酒吧可以看到50%。 我以40公里/小时的速度向我展示了40%的酒吧。
我想将图像放在速度条图像上方,并根据gps速度隐藏第一张图像。
答案 0 :(得分:0)
您可以使用简单的黑客来实现此效果。您可以在另一个ImageView
内包含UIView
。为Autolayout Constraints
的前导,上下空间提供ImageView
。不要添加尾随空间约束。现在,当您更改UIView
的宽度时,您可以根据输入看到图像显示。
这是结构:
和自动布局约束:
现在连接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);