ios - 使用 UISlider 移动两个 UIImageView

标签 ios objective-c uiimageview uislider

我正在尝试根据 UISlider 将两个 UIImageView 移动到一起。为了更好地理解,这是一张图片:

enter image description here

当 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/

相关文章:

ios - 如何在不让 UIView 移动到角落的情况下使用大小约束?

ios - 当键盘为 numberPad、phonePad 或 DecimalPad 时应用程序崩溃(iOS 12.2、Xcode 10.2)

objective-c - NSTextField 事件和辞职第一响应者

objective-c - 苹果操作系统 X : Intercept keyboard layout change

ios - 在 UITableView 中使用带有 [UIImage resizableImageWithCapInsets] 的 UIImageView 会导致延迟

ios - 触摸时自动滚动到 tableviewcell

ios - AFNetworking 正在从网络服务获取信息,但出现错误。错误域=AFNetworkingErrorDomain 代码=-1016

ios - 静态方法 NSInitation

ios - 如何从 UIImageView 中删除边框/阴影?

ios - 固定宽度 : how to set its height to keep its aspect? 的 UIImageView