2015-10-23 3 views
0

Я использую контроллер камеры для съемки, и я показываю его в своем приложении. Однако я не использую UIImageView, чтобы отобразить изображение. Я рисую UIImage на UIView, и результатом я получаю обратное изображение. Вот скриншот:UIImage отменяется, когда нарисован на UIView

enter image description here

и результат после того, как я нажимаю на использование фото является:

enter image description here

Вот мой код:

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

    UIImage *chosenImage = info[UIImagePickerControllerEditedImage]; 

    dView=[[drawView alloc]initWithFrame:imageUIView.frame]; 
    [dView drawImage:chosenImage]; 

    [imageUIView addSubview:dView]; 

    [picker dismissViewControllerAnimated:YES completion:NULL]; 

} 

и DVIEW:

-(void)drawImage:(UIImage *) imageToDraw{ 
    self.pic=imageToDraw; 
    [imageToDraw drawInRect:self.frame]; 
    [self setNeedsDisplay]; 

} 

- (void)drawRect:(CGRect)rect { 

CGContextRef context = UIGraphicsGetCurrentContext(); 

CGRect targetBounds = self.layer.bounds; 
    // fit the image, preserving its aspect ratio, into our target bounds 
CGRect imageRect = AVMakeRectWithAspectRatioInsideRect(self.pic.size, 
                  targetBounds); 
    // draw the image 
CGContextDrawImage(context, imageRect, self.pic.CGImage); 

// Save the screen to restore next time around 
imageRef = CGBitmapContextCreateImage(context); 

} 

Я попробовал CGAffineTransformMakeRotation и CGContextRotateCTM для правильного отображения изображения, но они поворачивают изображение, вместо того, чтобы отображать содержимое в правильном порядке. Как вы можете видеть, содержимое на изображении полностью отменено.

Как нарисовать uiimage, не внося изменений в свою форму?

+0

@picciano Почему? Это не связано. – rmaddy

ответ

1

Ваш класс drawView не рисует изображение должным образом. Попробуйте это:

- (void)drawImage:(UIImage *)imageToDraw { 
    self.pic = imageToDraw; 
    [self setNeedsDisplay]; 
} 

- (void)drawRect:(CGRect)rect { 
    CGRect targetBounds = self.layer.bounds; 
     // fit the image, preserving its aspect ratio, into our target bounds 
    CGRect imageRect = AVMakeRectWithAspectRatioInsideRect(self.pic.size, 
                   targetBounds); 
     // draw the image 
    [self.pic drawInRect:imageRect]; 
} 
  1. Это может быть лучше, чтобы добавить UIImageView как подвид вашего drawView. Позвольте представлению изображения выполнить всю необходимую работу для правильного отображения изображения.
  2. Соглашения об именовании. Имена классов должны начинаться с заглавных букв. Имена переменных и методов начинаются с строчных букв.
+0

Я мог бы использовать изображение, но у меня есть другие вещи, связанные с очисткой слоев прикосновением. Я не мог сделать это на изображении, поэтому я использовал uiview. В любом случае я попробую это !!! –

Смежные вопросы