我必须制造一个速度计。我有一个速度栏(png文件),我想在GPS速度改变时重新设置。
示例...最大速度设置为100(km / h)。当我以50 km / h的速度行驶时,该条显示为50%。Whem我以40 km / h的速度向应用显示了40%的酒吧。
我想在速度条图像上方放置一个图像,并根据gps速度隐藏第一个图像。
您可以使用一个简单的技巧来达到此效果。您可以将ImageView
包含在另一个UIView
中。给Autolayout Constraints
作为ImageView
的前导,顶部和底部空间。不要添加尾随空间约束。现在,当您更改UIView
s的宽度时,您可以看到根据您的输入显示的图像。
这里是结构:
和自动布局约束:
现在连接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);