Почему я не могу сохранить представление должным образом в виде изображения?

#objective-c #ios4 #screenshot

#objective-c #ios4 #скриншот

Вопрос:

Итак, мне удалось сделать это по большей части. Но по какой-то причине изображение, на которое делается снимок экрана, не получает скриншот должным образом.

Например, это изображение:

http://postimage.org/image/kfioellw/

Хотите обрезать его следующим образом:

http://postimage.org/image/kfkbxy3o/

В итоге получается вот так:

http://postimage.org/image/kflzhalg/

Вот как я это делаю:

 -(IBAction)cropButtonPressed {
    UIGraphicsBeginImageContext(thumbnailScroll.frame.size);
    [thumbnailScroll.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *pThumbnail = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    [delegate didFinishCroppingImage:(UIImage *)pThumbnail withSmallPicture:(UIImage *)pThumbnail andOriginalPicture:(UIImage *)pThumbnail];
}

-(void)didFinishCroppingImage:(UIImage *)croppedImage withSmallPicture:(UIImage *)smallPic andOriginalPicture:(UIImage *)original {
    normalThumbnail.image = croppedImage;
    UIImageWriteToSavedPhotosAlbum(normalThumbnail.image, nil, nil, nil);
    [self dismissModalViewControllerAnimated:YES];
}
  

Я не понимаю, почему это не скриншот того, что у меня есть в моем UIScrollView. Любая помощь? Я постараюсь предоставить столько деталей, сколько потребуется.

Комментарии:

1. Вы работаете на устройстве / симуляторе Retina? Я не уверен, где, но, похоже, что-то не знает о contentscale, глядя на ваши скриншоты.

2. Да, это для устройства retina. Проблема возникает как в симуляторе, так и на реальном устройстве.

3. Вы должны убедиться, что масштаб содержимого во всех ваших слоях и изображениях равен 2.

4. Мои глубочайшие извинения за вопрос, но как именно мне это сделать? Кажется, я не могу найти ничего с «contentScale», по крайней мере, не в IB.

5. Я никогда не использую IB, я создаю свои представления программно, пожалуйста, опубликуйте код, в котором вы отображаете изображение, и я, возможно, смогу вам помочь оттуда. contentsScale — это свойство слоя, в UIImageView это свойство называется contentsScaleFactor, я подозреваю, что у вашего обрезанного изображения это значение равно 1 вместо 2.