0

我有一个用于相机的自定义叠加层,我有UISlider叠加层:

@implementation LWOverlayView

- (id)initWithFrame:(CGRect)frame imagePath:(NSString*) imagepath{
    if ((self = [super initWithFrame:frame])) {
        // Clear the background of the overlay:
        self.opaque = NO;
        self.backgroundColor = [UIColor clearColor];


        UIImageView *overlayGraphicView = [[UIImageView alloc] init];
        overlayGraphicView.contentMode = UIViewContentModeScaleAspectFill;
        [overlayGraphicView setImageWithURL:[NSURL URLWithString:imagepath]
                       placeholderImage:[UIImage imageNamed:@"placeholder.png"]];


        overlayGraphicView.frame = CGRectMake(80, 140, 160, 120);
        [self addSubview:overlayGraphicView];

        UIToolbar *toolbar = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 436, 320, 44)];
        [toolbar setBarStyle:UIBarStyleBlackOpaque];

        UIBarButtonItem *doneButton = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(dismiss)];

        CGRect frame = CGRectMake(0.0, 0.0, 200.0, 10.0);
        UISlider *slider = [[UISlider alloc] initWithFrame:frame];
        [slider addTarget:self action:@selector(sliderAction:) forControlEvents:UIControlEventValueChanged];
        [slider setBackgroundColor:[UIColor clearColor]];
        slider.minimumValue = 0.0;
        slider.maximumValue = 50.0;
        slider.continuous = YES;
        slider.value = 25.0;


        [toolbar setItems:[NSArray arrayWithObjects:doneButton, slider, nil]];

        [self addSubview:toolbar];

    }
    return self;
}

应用程序崩溃:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UISlider view]: unrecognized selector sent to instance 0x20854fe0'

有什么提示吗?

4

3 回答 3

4

正如已经指出的那样,您不能直接将 a UISlider(或任何其他UIView)直接添加到工具栏项列表中。

您需要做的是创建一个UIBarButtonItem包含滑块的。

UIBarButtonItem *sliderBtn = [[UIBarButtonItem alloc] initWithCustonView:slider];

现在添加sliderBtn到数组而不是slider.

您可能会发现需要将width属性设置为sliderBtn.

于 2013-05-17T15:29:34.673 回答
2

您不能将滑块添加到工具栏:

[toolbar setItems:[NSArray arrayWithObjects:doneButton, slider, nil]];

那就是破坏您的代码的原因,您只能添加 UIBarButtonItem

于 2013-05-17T14:31:43.797 回答
0

工具栏可以包含 UIBarButtonItem 项。UISlider 不是 UIBarButtonItem。这可能与崩溃有关。尝试移除滑块,看看它是如何工作的。

于 2013-05-17T14:32:47.807 回答