Xcode:如何以编程方式显示png图像

问题描述 投票:-2回答:1

我必须制造一个速度计。我有一个速度栏(png文件),我想在GPS速度改变时重新设置。

speed bar

示例...最大速度设置为100(km / h)。当我以50 km / h的速度行驶时,该条显示为50%。Whem我以40 km / h的速度向应用显示了40%的酒吧。

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

objective-c uiscrollview gps
1个回答
0
投票

您可以使用一个简单的技巧来达到此效果。您可以将ImageView包含在另一个UIView中。给Autolayout Constraints作为ImageView的前导,顶部和底部空间。不要添加尾随空间约束。现在,当您更改UIView s的宽度时,您可以看到根据您的输入显示的图像。

这里是结构:

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);
© www.soinside.com 2019 - 2024. All rights reserved.