Это не реальный ответ, но в комментариях недостаточно места.
Я просто воссоздал простой проект, чтобы посмотреть, влияет ли порядок добавления представлений на скриншот.
Я использовал шаблон приложения на основе представления.Перо имеет две кнопки, связанные со свойствами btn1 и btn2.Смотрите скриншот 1. Верхняя кнопка btn1 подключается к действию, чтобы начать снимать скриншот и добавлять его под кнопками, чтобы увидеть разницу.Вторая кнопка изначально скрыта.
снимок экрана 1
Вот мой код viewController.myView - это ваше вспомогательное представление, которое будет создано в viewWillAppear.Это представление содержит метку, как вы увидите позже.
Заголовок
...
@interface ScreenshotviewsViewController : UIViewController
{
UIButton *btn1;
UIButton *btn2;
UIView *myView;
}
@property (nonatomic ,retain) IBOutlet UIButton *btn1;
@property (nonatomic ,retain) IBOutlet UIButton *btn2;
@property (nonatomic ,retain) UIView *myView;
- (IBAction)doTheThings;
@end
Я пропущу ваш метод скриншота: ничего не изменилось, работает как шарм :).Результат в снимок экрана 2
- сделать снимок экрана
- show btn2
- добавить myView как подпредставление
- добавить снимок экрана в подпредставление
Как видите, на скриншоте другие виды не видны.Я просто добавил его под кнопками, чтобы увидеть различия.
Реализация: случай 1
- (void)viewWillAppear:(BOOL)animated
{
self.myView = [[[UIView alloc] initWithFrame:CGRectMake(0, 20, 320, 50)] autorelease];
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(5, 5, 200, 40)];
myView.backgroundColor = [UIColor greenColor];
[myView addSubview:label];
label.text = @"fooo";
[label release];
}
- (IBAction)doTheThings
{
UIImageView *screenShotView = [[UIImageView alloc] initWithImage:[self screenshot]];
[screenShotView setFrame:CGRectMake(0, 230, 320, 480)];
btn2.hidden = NO;
[self.view addSubview:myView];
[self.view addSubview:screenShotView];
[screenShotView release];
}
снимок экрана 2
вариант два будет
снимок экрана 3
Как видно, заказ распознан,Я пропустил анимацию, хотя.Удалите анимацию и посмотрите, работает ли тогда.Еще попробуйте сделать это в отдельном проекте, как я, и посмотрите, работает ли он изолированно.Если да, нам придется больше вникать в ваше приложение.