4

你们对我的最后一个问题帮助很大,我想我会给你一个机会。我编写了一个应用程序,其主题使用深蓝色玻璃状背景和白色/灰色文本和标签。我的应用程序中的文本字段有清晰的背景和白色文本,一切都显示得很好。我唯一担心的是,当您在文本框中按住触摸以获取放大镜时,当然白色文本会显示在白色背景上……您无法阅读。有人对如何在这里实现可用的放大镜有任何想法吗?

4

3 回答 3

2

不幸的是,我知道如何更改放大镜背景的唯一“公共”方式是设置 textField.backgroundColor

我假设由于您将背景设置为 clearColor,放大镜默认为白色背景,因此唯一的方法是将您的 backgroundColor 设置为不清晰的东西。

我还假设由于您确实提到您将背景设置为清晰,因此不清晰不是一种选择。因此,我可以在脑海中想到如何解决这个问题的两种方法是:

  1. 假设放大 lopue 通过调用 backgroundColor 实现(而不是其他一些晦涩的私有 API 方法)获取其背景颜色:覆盖 backgroundColor 方法并返回纯色。
  2. 创建自己的放大镜(可能不可行)
于 2009-08-14T01:22:42.863 回答
2

我想出了一个简单的解决方法,可以达到预期的效果。我也经历了制作自己的放大镜的完整过程,但是由于有关于制作自己的放大镜的明确文档(请参阅 kiyoshi 的回答),而另一种方法非常简单,我决定在这里记录。它基本上只是假装清晰的背景,以便白色文本出现在放大镜中。我用于视图的背景看起来像深蓝色背景上的蓝色烟雾:

替代文字 http://img231.imageshack.us/img231/9835/beforestatex.jpg

我截取了模拟器的屏幕截图,其中文本字段可见且背景为黑色,因此它会显示得更好:

替代文字 http://img193.imageshack.us/img193/9023/blackfieldx.jpg

然后我截取了那个截图,并在 Photoshop 中将其设为半透明,并覆盖了我的原始背景图像,以找到文本字段出现在背景上的确切位置:

替代文字 http://img266.imageshack.us/img266/9493/transparencyfullscreenx.jpg

然后我将用作文本字段背景的确切像素复制到一个新的 PNG 中并保存并将其设置为背景图像:

替代文字 http://img41.imageshack.us/img41/3450/textboxback.png

forwardToField.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed:@"textboxback.png"]];

请记住,图像将在放大镜中作为图案重复......因此,如果您不想看到边缘,只需确保您的文本字段大于放大镜的高度和宽度。

前:

替代文字 http://img196.imageshack.us/img196/2672/beforex.jpg

后:

替代文字 http://img23.imageshack.us/img23/2182/afterxd.jpg

我希望这可以帮助那里的人!

于 2009-08-14T14:34:41.867 回答
1

实际上,创建自己的循环非常可行。还没有尝试过使用苹果,所以不知道他们对此有何感受。

基本思想是覆盖触摸,使用计时器来查看用户触摸屏幕的时间。放大镜只是一个 UIView,它可以将其后面的视图作为图像抓取并放大。

在此处查看 Craftymind 的这篇文章

这篇文章让你缓存了整个图像,它后面肯定更快,用于渲染放大镜,但是如果你有不断变化的东西(即 textFields),我已经能够实时渲染循环图像而没有太多的性能受到打击。

于 2009-08-14T07:41:46.657 回答