当以编程方式截取屏幕截图时,UISegmentedControl中所选分段的标题会消失

时间:2014-01-27 18:07:24

标签: ios iphone ios7 uisegmentedcontrol

我已将UISegmentedControl添加到UIToolbar

UIToolbar *toolbar = [[UIToolbar alloc] initWithFrame:toolbarFrame];
toolbar.barStyle = UIBarStyleBlack;
toolbar.translucent = YES;
toolbar.barTintColor = [UIColor colorWithRed:0.97 green:0.97 blue:0.97 alpha:1.0];
[self.view addSubview:toolbar];

UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:@[@"Last week", @"Last month", @"All time"];
[segmentedControl setSelectedSegmentIndex:0];
[toolbar addSubview:segmentedControl];

然后将工具栏添加到视图控制器。当我拍摄视图控制器的屏幕截图时,会发生一些奇怪的事情。所选片段的标题消失。

截图正在使用:

UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, YES, [[UIScreen mainScreen] scale]);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

渲染视图: enter image description here

截图: enter image description here

从哪里开始寻找?

1 个答案:

答案 0 :(得分:4)

我已经取代了

[self.view.layer renderInContext:UIGraphicsGetCurrentContext()]; 

使用

[self.view drawViewHierarchyInRect:self.view.bounds afterScreenUpdates:YES];

现在它按预期工作。仍然不明白为什么会发生这种情况。

请注意,drawViewHierarchyInRect:afterScreenUpdates:仅限iOS 7。