我正在尝试根据 UISlider 将两个 UIImageView 移动到一起。为了更好地理解,这是一张图片:
当 slider 的球滑到最左边(值为零)时,将只显示绿色。当它滑到最右边(值为 600)时,应该只显示红色。如果 slider 的值为 480,它应该显示 80% 的红色图片和 20% 的绿色图片。我用来尝试实现此目的的代码:
- (void)viewDidLoad
{
[super viewDidLoad];
self.slider.minimumValue = 0;
self.slider.maximumValue = 600;
}
- (IBAction)sliderChanged:(id)sender {
[imageViewLeft setFrame:CGRectMake(slider.value - 50, imageViewLeft.frame.origin.y,imageViewLeft.frame.size.width,imageViewLeft.frame.size.height)];
[imageViewRight setFrame:CGRectMake(slider.value + 50, imageViewRight.frame.origin.y,imageViewRight.frame.size.width,imageViewRight.frame.size.height)];
}
这工作正常,但第二次我更改 slider 时,红色图像(名为 imageViewLeft)缩小,而 imageViewRight 保持相同大小。我一辈子都弄不明白为什么(我对编程和 iOS 还是很陌生)。有谁知道我应该更改什么或如何最好地完成此更改?
最佳答案
您可以通过保持绿色背景全屏并仅调整红色 View 来实现或多或少相同的效果:
- (void)viewDidLoad
{
[super viewDidLoad];
self.slider.minimumValue = 0;
self.slider.maximumValue = 600;
imageViewRight.frame = self.view.bounds;
}
- (IBAction)sliderChanged:(id)sender {
[imageViewLeft setFrame:CGRectMake(0, 0,(self.slider.value/self.slider.maximumValue)*sliderimageViewRight.frame.size.width,imageViewRight.frame.size.height)];
}
或者,如果您仍然希望两个 View 都是边到边的,那么您可以这样做:
- (void)viewDidLoad
{
[super viewDidLoad];
self.slider.minimumValue = 0;
self.slider.maximumValue = 600;
}
- (IBAction)sliderChanged:(id)sender {
[imageViewLeft setFrame:CGRectMake(0, 0,(self.slider.value/self.slider.maximumValue)*self.view.bounds.size.width,self.view.bounds.size.height)];
[imageViewRight setFrame:CGRectMake(imageViewLeft.frame.size.width, 0,self.view.bounds.size.width-imageViewLeft.frame.size.width,self.view.bounds.size.height)];
}
关于ios - 使用 UISlider 移动两个 UIImageView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23716299/