Pergunta

Ho do I crop circle images with Image picker controller?

The pictures I'm displaying in my projects are round using the code below

 CALayer *image = profileImageView.layer;
        [image  setCornerRadius:50];
        [image  setMasksToBounds:YES];

        [image setBorderColor:[[UIColor whiteColor]CGColor]];
        [image setBorderWidth:5];

So far I have this code to crop images but it only makes them square

   - (void)showPhotoLibary
    {
        if (([UIImagePickerController isSourceTypeAvailable:
              UIImagePickerControllerSourceTypeSavedPhotosAlbum] == NO)) {
            return;
        }

        UIImagePickerController *mediaUI = [[UIImagePickerController alloc] init];
        mediaUI.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;

        // Displays saved pictures from the Camera Roll album.
        mediaUI.mediaTypes = @[(NSString*)kUTTypeImage];

        // Hides the controls for moving & scaling pictures
        mediaUI.allowsEditing = YES;


        mediaUI.delegate = self;


        [self presentViewController:mediaUI animated:YES completion:nil];
    }


    - (void) imagePickerController: (
                                     UIImagePickerController *) picker didFinishPickingMediaWithInfo: (NSDictionary *) info {

        UIImage *originalImage = (UIImage *) [info objectForKey:UIImagePickerControllerOriginalImage];
        self.profileImageView.image = originalImage;



        [picker dismissViewControllerAnimated:YES completion:nil];

    }
Foi útil?

Solução 3

Check if u added QuartzCore framework to your project. then u can do somthing like below import #import <QuartzCore/QuartzCore.h> .m or .h file

- (void)viewDidLoad
 {
   [self.profileImageView.layer setCornerRadius:50];
   [self.profileImageView.layer setMasksToBounds:YES];
   [self.profileImageView.layer setBorderColor:[[UIColor whiteColor]CGColor]];
   [self.profileImageView.layer setBorderWidth:5];
 }

- (void) imagePickerController: (UIImagePickerController *) picker didFinishPickingMediaWithInfo: (NSDictionary *) info 
 {
   UIImage *originalImage = (UIImage *) [info objectForKey:UIImagePickerControllerEditedImage]; //it returns the edited image, 
   self.profileImageView.image = originalImage;
   [picker dismissViewControllerAnimated:YES completion:nil];

 }

Outras dicas

import #import <QuartzCore/QuartzCore.h> inyour.h file

   self.profileImageView.layer.cornerRadius = imageView.frame.size.width/2;  //or 20.0
   self.profileImageView.layer.masksToBounds = YES;

Import the "QuartzCore framework" to get access to the ".cornerRadius property" of your UIView or UIImageView.

#import <QuartzCore/QuartzCore.h>

Also manually add it to your project's Frameworks folder. Add this method to your view controller or wherever you need it:

-(void)setRoundedView:(UIImageView *)roundedView toDiameter:(float)newSize;
{
    CGPoint saveCenter = roundedView.center;
    CGRect newFrame = CGRectMake(roundedView.frame.origin.x, roundedView.frame.origin.y, newSize, newSize);
    roundedView.frame = newFrame;
    roundedView.layer.cornerRadius = newSize / 2.0;
    roundedView.center = saveCenter;
}

If you want to display the circle UIImageView, you can follow as below

profileImageView.layer.cornerRadius = imageView.frame.size.width/2;

profileImageView.clipsToBounds = YES;

If you want to change your original image source to circle, you have to do some image drawing process.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top