изменение свойства границ UIView в iOS, затем рендеринг изображения - PullRequest
0 голосов
/ 21 октября 2011

В моем приложении:

  • У меня есть представление (UIView * myView) с clipsToBound = YES;

  • У меня есть кнопка дляизменить свойство источника границ:

CGRect newRect = myView.bounds;
newRect.origin.x += 100;
myView.bounds = newRect;
myView.layer.frame = newRect;
  • Тогда я получаю изображение из вида:
UIGraphicsBeginImageContext(myView.bounds.size);
[myView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage_after = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageWriteToSavedPhotosAlbum(viewImage_after, nil, nil, nil);

Создает изображение, которого я не ожидал.Мне нужно изображение, которое я вижу на экране iPhone.

Ссылка для кода здесь: http://www.mediafire.com/?ufr1q8lbd434wu1

Пожалуйста, помогите мне!

1 Ответ

1 голос
/ 21 октября 2011

Вы не хотите отображать само изображение в вашем контексте - оно всегда будет отображаться одинаково (вы не изменяете изображение, вы просто перемещаетесь, насколько оно высоко).

Вы хотите отобразить родительский вид изображения следующим образом:

UIGraphicsBeginImageContext(myView.superview.bounds.size);
[myView.superview.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage_after = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageWriteToSavedPhotosAlbum(viewImage_after, nil, nil, nil);

EDIT

Тем не менее, вы можете не захотеть отображать все в вашем суперпредставлении :)

Ваши взгляды могут выглядеть примерно так:

MainView
   ImageView (myView)
   UIButton (ok button)
   UIButton (cancel button)

Здесь при рендеринге суперпредставления изображения будет отображаться MainView - включая кнопки!

Вам нужно добавить другой вид в вашу иерархию, например:

MainView
  UIView (enpty uiview)
    ImageView (myView)
  UIButton (ok button)
  UIButton (cancel button)

Теперь, когда вы визуализируете суперпредставление вашего изображения, оно содержит только изображение внутри - кнопки не отображаются:)

...