开发者

problem in adding second UIbutton in cameraOverlayView

开发者 https://www.devze.com 2023-01-14 19:25 出处:网络
problem in adding second UIbutton in cameraOverlayView ,herei am able to add the first button but not able to add second buttonwith following code

problem in adding second UIbutton in cameraOverlayView ,here i am able to add the first button but not able to add second button with following code

- (void)pickAndDecodeFromSource:(UIImagePickerControllerSourceType) sourceType {
  [self reset];

  // Create the Image Picker
  if ([UIImagePickerController isSourceTypeAvailable:sourceType]) {
    UIImagePickerController* aPicker =
        [[[UIImagePickerController alloc] init] autorelease];
    aPicker.sourceType = sourceType;
    aPicker.delegate = self;
    self.picker = aPicker;


    // [[NSUserDefaults standardUserDefaults] boolForKey:@"allowEditing"];
    BOOL isCamera = (sourceType == UIImagePickerControllerSourceTypeCamera);
    if ([picker respondsToSelector:@selector(setAllowsEditing:)]) {
      // not in 3.0
      [picker setAllowsEditing:!isCamera];
    }
    if (isCamera) {
      if ([picker respondsToSelector:@selector(setShowsCameraControls:)]) {
        [picker setShowsCameraControls:NO];
        UIButton *cancelButton =
          [UIButton buttonWithType:UIButtonTypeRoundedRect];
        NSString *cancelString =
          NSLocalizedString(@"DecoderViewController cancel button title", @"");
        CGFloat height = [UIFont systemFontSize];
        CGSize size = 

          [cancelString sizeWithFont:[UIFont systemFontOfSize:height]];
        [cancelButton setTitle:cancelString forState:UIControlStateNormal];
          //cancelButton.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"CancelButtonForButton.png"]];
          //cancelButton.backgroundColor = [UIColor clearColor];
          //cancelButton.backgroundColor = [UIColor greenColor];
            [cancelButton setImage:[UIImage imageNamed:@"cancelForButton.png"] forState:UIControlStateNormal];
          //[cancelButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; 

        CGRect appFrame = [[UIScreen mainScreen] bounds];
        static const int kMargin = 10;
        static const int kInternalXMargin = 10;
        static const int kInternalYMargin = 10;
        CGRect frame = CGRectMake(kMargin,
          appFrame.size.height - (height + 2*kInternalYMargin + kMargin),
          2*kInternalXMargin + size.width,
          height + 2*kInternalYMargin);
        [cancelButton setFrame:frame];
        [cancelButton addTarget:self
                         action:@selector(cancel:)
               forControlEvents:UIControlEventTouchUpInside];
        picker.cameraOverlayView = cancelButton;
        // The camera takes quite a while to start up. Hence the 2 second delay.
        [self performSelector:@selector(takeScreenshot)
                   withObject:nil
                   afterDelay:2.0];
          //cancelButton.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"bg.png"]];
      }
    }

    // Picker is displayed asynchronously.
    [self presentModalViewCont开发者_StackOverflowroller:picker animated:YES];
  } else {
    NSLog(@"Attempted to pick an image with illegal source type '%d'", sourceType);
  }
}


The issue is that you are replacing the camera overlay with the first button - so creating the second button and using "picker.cameraOverlayView = newButton;" replaces the camera-overlay again.

The solution is to create a parent UIView, add both buttons to it, and then set the camera overlay to be the parent UIView.

0

精彩评论

暂无评论...
验证码 换一张
取 消