我需要为编辑模式执行自定义字段数据突出显示:当用户点击该字段时,我们在整个屏幕上设置覆盖率为alpha 0.5,但显示该覆盖图上方的字段值。因此,看起来我们强调字段的文本值,并将所有其他内容放到屏幕上。
目前我只有一个想法如何做到这一点:
这个解决方案的唯一问题是在“窗口”内部,我们不仅有文本,还有像背景这样的其他东西。
那么也许这种叠加的另一种解决方案是只有叠加的文本值?
更新
我提出了以下解决方案:在叠加视图内的图像视图中显示字段(快照)的图像。它易于实现,对这么小的区域进行快照不会影响性能。
答案 0 :(得分:0)
将您的uitextfield子类化并订阅此通知:
UITextFieldTextDidBeginEditingNotification
UITextFieldTextDidChangeNotification
UITextFieldTextDidEndEditingNotification
然后添加重叠uiview作为你的uiwindow子视图
UIView* myView = /* Your custom view */;
UIWindow* currentWindow = [UIApplication sharedApplication].keyWindow;
[currentWindow addSubview:myView];
覆盖此自定义视图的drawRectFunc
,其中maskRect
- 文本框架的框架(必须转换为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);
}
希望这会有所帮助