Question

I have a graphic white spot appearing on the screen when I customize UIActionSheet.

The graphic white spot disappear when I set *background to any other color than transparent...

Screenshot:

enter image description here

and here is my code :

- (void) customisingActionSheet
{

    UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@""
                                                            delegate:nil
                                                   cancelButtonTitle:nil
                                              destructiveButtonTitle:nil
                                                   otherButtonTitles:nil];

    UIView *background = [[UIView alloc] initWithFrame:CGRectMake(0,0,320, 315)];
    background.backgroundColor = [UIColor clearColor];
    [actionSheet addSubview:background];

    self.customActionSheet = actionSheet;



    UIButton *cancelButton = [UIButton buttonWithType: UIButtonTypeCustom];
    cancelButton.frame = CGRectMake(15, 111, 290, 45);
    [cancelButton addTarget:self action:@selector(cancelButtonClicked:)    forControlEvents:UIControlEventTouchUpInside];
    cancelButton.adjustsImageWhenHighlighted = YES;
    [cancelButton setTitle:@"Cancel" forState:UIControlStateNormal];
    [cancelButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
    cancelButton.backgroundColor = darkGrey;
    cancelButton.titleLabel.textAlignment = NSTextAlignmentCenter;
    cancelButton.titleLabel.font = [UIFont fontWithName: @"HelveticaNeue-Medium" size: 17];
    [self.customActionSheet addSubview: cancelButton];

    UIButton *chooseFromLibrary = [UIButton buttonWithType: UIButtonTypeCustom];
    chooseFromLibrary.frame = CGRectMake(15, 52, 290, 45);
    [chooseFromLibrary addTarget:self action:@selector(emailResultsTapped:) forControlEvents:UIControlEventTouchUpInside];
    chooseFromLibrary.adjustsImageWhenHighlighted = YES;
    [chooseFromLibrary setTitle:@"Choose from Library" forState:UIControlStateNormal];
    [chooseFromLibrary setTitleColor:[UIColor colorWithRed:53/255.0f green:53/255.0f blue:53/255.0f alpha:1.0f] forState:UIControlStateNormal];
    chooseFromLibrary.backgroundColor = [UIColor whiteColor];
    chooseFromLibrary.titleLabel.textAlignment = NSTextAlignmentCenter;
    chooseFromLibrary.titleLabel.font = [UIFont fontWithName: @"Helveticaneue" size: 17];
    [self.customActionSheet addSubview: chooseFromLibrary];

    UIButton *takePicture = [UIButton buttonWithType: UIButtonTypeCustom];
    takePicture.frame = CGRectMake(15, 0, 290, 45);
    [takePicture addTarget:self action:@selector(emailResultsTapped:) forControlEvents:UIControlEventTouchUpInside];
    takePicture.adjustsImageWhenHighlighted = YES;
    [takePicture setTitle:@"Take picture" forState:UIControlStateNormal];
    [takePicture setTitleColor:[UIColor colorWithRed:53/255.0f green:53/255.0f blue:53/255.0f alpha:1.0f] forState:UIControlStateNormal];
    takePicture.backgroundColor = [UIColor whiteColor];
    takePicture.titleLabel.textAlignment = NSTextAlignmentCenter;
    takePicture.titleLabel.font = [UIFont fontWithName: @"Helveticaneue" size: 17];
    [self.customActionSheet addSubview: takePicture];


    [actionSheet showInView:self.view];
    [self.customActionSheet setBounds:CGRectMake(0,0,320, 315)];
}

Anyone has a solution for it? Many thanks.

Était-ce utile?

La solution

UIActionSheet is not designed to be subclassed, nor should you add views to its hierarchy. If you need to present a sheet with more customization than provided by the UIActionSheet API, you can create your own and present it modally with presentViewController:animated:completion:.

Based on: UIActionSheet Class Reference

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top