Ios 编辑时字段值的自定义高亮显示

Ios 编辑时字段值的自定义高亮显示,ios,Ios,我需要为编辑模式做自定义字段数据高亮显示:当用户点击该字段时,我们在整个屏幕上将覆盖设置为alpha 0.5,但显示覆盖上方的字段值。所以看起来我们确实强调了字段的文本值,并将屏幕上的所有其他内容放到了背景中 目前我只有一个简单的想法: 获取该字段的绝对坐标实际上它是表单元格中的自定义控件。 将alpha为0.5的新覆盖视图添加到当前视图控制器的视图中。这使屏幕上的所有内容都变成了背景。 创建新的形状层,其边界与步骤1中的字段相同,并将此层添加为覆盖视图的遮罩。这将在覆盖中创建一个窗口,并且我们

我需要为编辑模式做自定义字段数据高亮显示:当用户点击该字段时,我们在整个屏幕上将覆盖设置为alpha 0.5,但显示覆盖上方的字段值。所以看起来我们确实强调了字段的文本值,并将屏幕上的所有其他内容放到了背景中

目前我只有一个简单的想法:

获取该字段的绝对坐标实际上它是表单元格中的自定义控件。 将alpha为0.5的新覆盖视图添加到当前视图控制器的视图中。这使屏幕上的所有内容都变成了背景。 创建新的形状层,其边界与步骤1中的字段相同,并将此层添加为覆盖视图的遮罩。这将在覆盖中创建一个窗口,并且我们的字段将不受alpha值的影响。 这个解决方案的唯一问题是,在窗口内,我们不仅有文本,还有来自字段的其他内容,比如背景

所以,也许有另一个解决方案,这样的覆盖,只有文字价值以上覆盖

更新


我提出了以下解决方案:在覆盖视图内的图像视图中显示字段快照的图像。它很容易实现,对如此小的区域进行快照不会影响性能。

将uitextfield子类化并订阅此通知:

UITextFieldTextDidBeginEditingNotification
UITextFieldTextDidChangeNotification
UITextFieldTextDidEndEditingNotification
然后添加重叠uiview作为uiwindow子视图

UIView* myView = /* Your custom view */;
UIWindow* currentWindow = [UIApplication sharedApplication].keyWindow;
[currentWindow addSubview:myView];
覆盖此自定义视图的drawRectFunc,其中文本字段的maskRect-frame必须转换为uiwindow坐标

- (void)drawRect:(CGRect)rect
{
// Drawing code
CGRect rBounds = self.bounds;

CGContextRef context = UIGraphicsGetCurrentContext();

// Fill background with 80% white
CGContextSetFillColorWithColor(context, [[[UIColor whiteColor] colorWithAlphaComponent:0.8] CGColor]);
CGContextFillRect(context, rBounds);

// make the window transparent
CGContextSetBlendMode(context, kCGBlendModeClear);
CGContextFillRect(context, self.maskRect);
}

希望这有帮助

我决定用字段快照实现此突出显示,但对于最初的问题,您的实现是好的。