图层屏幕截图不采用UISegmentedControl选定的文本

时间:2014-05-19 06:33:21

标签: ios screenshot uisegmentedcontrol

我正在尝试使用以下代码

获取UIView的屏幕截图
UIGraphicsBeginImageContextWithOptions(size, NO, 0.0);
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

UISegmentControl's所选文字存在问题。它只出现在 IOS7 中。完全适用<=IOS6.我附加了屏幕截图。

IOS 6屏幕截图正常工作。

enter image description here

但相同的代码不适用于IOS7 +。

enter image description here

如果有人找到解决方法或原因,请帮助我。

2 个答案:

答案 0 :(得分:0)

请你试试这个答案:

在这个答案中,我试图更改SegmentController的字体颜色。

NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:
                        [UIFont boldSystemFontOfSize:14], UITextAttributeFont,
                        [UIColor redColor], UITextAttributeTextColor,
                        nil];
[yoursegmentedControl setTitleTextAttributes:dic forState:UIControlStateNormal];
NSDictionary *clickedindex= [NSDictionary dictionaryWithObject:[UIColor whiteColor] forKey:UITextAttributeTextColor];
[yoursegmentedControl setTitleTextAttributes:clickedindex forState:UIControlStateHighlighted];

答案 1 :(得分:0)

最后我找到了解决方案,但我不知道,它是如何工作的(这背后的概念)。但假设是,层渲染将在动画结束时发生。但drawViewHierarchyInRect:将呈现呈现的绝对屏幕。我的代码如下。

#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v)  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
#define iOS7_0 @"7.0"

UIGraphicsBeginImageContextWithOptions(size, NO, 0.0);
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(iOS7_0))
    [baseView drawViewHierarchyInRect:baseView.frame afterScreenUpdates:YES];
else
    [baseView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

我看到this post.

的引用