2

我正在使用 UIslider 在屏幕上左右移动 UIImage。当 UISlider 完全在左侧时,图像将在屏幕左侧 X 轴上的某个位置,当滑块完全在右侧时,图像在屏幕右侧。例如,如果我想让图像灵活移动 600 像素,我该怎么做?

-(IBAction)sliderValueChanged:(UISlider *)sender
{

if (sender.value >= 0.5) {

int value;
value = sender.value * 6;

[photoView setFrame:CGRectMake(photoView.frame.origin.x + value,
                                PhotoView.frame.origin.y,photoView.frame.size.width,photoView.frame.size.height)];
}else{

int value;
value = sender.value * -6;

[photoView setFrame:CGRectMake(photoView.frame.origin.x + value,
                               photoView.frame.origin.y,photoView.frame.size.width,photoView.frame.size.height)];

}

...这是我的猜测

4

2 回答 2

2

我最近不得不做与您尝试做的相同的事情,以便在 iPad/iPhone 充当仪表仪表的全尺寸飞机上使用。

这是我用来移动飞机仪表读数的图像的代码: 此外,您应该将浮点值四舍五入为 int,因为我们正在处理整个像素点。(图像仍然可以使用浮点值很好地移动,但我喜欢在处理像素点时使用 int。)

#import "ViewController.h"
#import <math.h>

@interface ViewController()

@property (nonatomic, strong) IBOutlet UIImageView *XAxis;
@property (nonatomic, strong) IBOutlet UISlider *XSlider;

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.XSlider.minimumValue = 0.0f;
    self.XSlider.maximumValue = 600.0f;
}

- (IBAction)XValueChanged:(UISlider *)XSlider;
{
    int XResult = (int)floorf(XSlider.value);

    self.XAxis.center = CGPointMake(self.XAxis.center.x, XResult);

    NSLog(@"X Value: %d", XResult);
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
}

@end
于 2012-12-01T23:30:52.933 回答
1

这样的事情怎么样

slider.minimumValue = 0.0f;
slider.maximumValue = 600.0f;

-(IBAction)sliderValueChanged:(UISlider *)sender
{
  [photoView setFrame:CGRectMake(sender.value, PhotoView.frame.origin.y,photoView.frame.size.width,photoView.frame.size.height)];
}

您也可以通过根据要设置 photoView 的位置更改某个固定数字的位置来执行此photoView.frame.origin.x + value操作floatValue + valuefloatValue还要计算值作为value = sender.value * constantwhereconstant再次取决于每次滑块移动需要移动多少。

查看文档以获取有关属性的更多详细信息

于 2012-12-01T23:13:40.080 回答