以不同的速率调整多个UIViews的大小



我有三个UIViews,它们由一个UISlider缩放。它们都有不同的最小比例(0.5、0.9和0.35(。当滑块从1.0移动到0.0时,我想按比例缩放每个视图。例如,视图1是100 x 100,当滑块为0.0时,它应该是50 x 50。视图2为100 x 100,当滑块为0.0时,应为90 x 90。它们都应该以不同的速率在时间上平滑地相互扩展。

这里的等式是:

float side = (100 * minScale) + (1.0 - minScale) * 100 * sliderValue;

例如:

float minScale = 0.9;
float sliderValue = 0.5
float side = (100 * minScale) + (1.0 - minScale) * 100 * sliderValue;
//side = 90 + (0.10 * 100 * 0.5) = 90 + 5 = 95

试试这个:

- (double)scaleFromSliderValue:(double)sliderValue minScale:(double)minScale {
    return minScale + sliderValue * (1 - minScale);
}
- (void)sliderValueChanged:(UISlider *)slider {
   double scale1 = [self scaleFromSliderValue:slider.value minScale:0.5];
   view1.transform = CGAffineTransformMakeScale(scale1, scale1);
   double scale2 = [self scaleFromSliderValue:slider.value minScale:0.9];
   view2.transform = CGAffineTransformMakeScale(scale2, scale2);
   double scale3 = [self scaleFromSliderValue:slider.value minScale:0.35];
   view3.transform = CGAffineTransformMakeScale(scale3, scale3);
}

最新更新