盲人程序员:在Xcode中设计一个界面而不能在视觉上定位UI元素

时间:2013-07-14 10:35:13

标签: xcode interface voiceover

我是Mac和iOS编程的新手,最近决定真正认真地开发两种平台的应用程序。我采取的第一步是注册Mac和iOS开发人员程序,下载Xcode并学习一本关于Objective-C的书。我花了大约6周的时间熟悉Objective-C,它的语法,概念和Foundation框架,并且纯粹是为了这些目的开发命令行应用程序。

现在,下一步似乎是Cocoa和开发提供图形用户界面的应用程序,我现在正在研究。现在,这是我遇到的一个问题:由于我完全失明,我无法直观地看到屏幕。因此,我使用VoiceOver,OS X和iOS内置的屏幕阅读器。也许有些开发者在某些时候听说过VoiceOver,因为Apple已经指定了与VoiceOver有关的各种可访问性指南。在这方面,非常感谢所有遵守这些指导方针的人,非常感谢您的努力! : - )

对于Xcode,它实际上与VoiceOver(VO)配合得很好。添加新的UI元素也没什么大不了的,我可以从库中复制它们并将它们粘贴到视图中。但是,我无法拖拽它们并以吸引人的方式设置它们,或者至少我还没有找到任何方法来实现它,因为我刚刚开始!

现在,我真的想知道是否有任何“文本”方式来安排UI元素。我知道检查员有很多种选择,但是我不确定他们是否会让我说手动更改UI元素的坐标。另外,我已经阅读了有助于创建一致布局的新约束,但此时我并不熟悉如何使用它们,或者它们在我的情况下是否有用。

另外,我确实认为生成一个100%吸引有目标的最终用户的界面对我来说可能是不可能的,因为我很难决定颜色选择或设计徽标。因此,我可能需要雇用某人来做这些事情。但是,如果我可以粗略地指定布局,那对我来说已经很有帮助了!

感谢您的任何想法/建议: - )

罗宾

2 个答案:

答案 0 :(得分:4)

我自己不是盲人用户,但我使用过VoiceOver,所以希望其中一些有用。我将此作为社区答案,如果您使用VoiceOver在Xcode中使用UI布局,请随意添加自己的经验提示。


在Xcode中编辑UI时,有一个Inspector,您可以在其中更改视图的大小和位置。到达大小检查器的快捷方式是 Alt + Command + 5 。同样的快捷方式适用于VoiceOver。

你说你正在为iOS和OS X编码。在iOS上,y轴从顶部开始向下指向(因此y值越大意味着屏幕上的视图越低)。这意味着x和y指定视图的左上角,宽度和高度从那里向右和向下延伸。

在OS X上,情况正好相反。 y轴从底部开始,y值越大意味着屏幕上的视图越高。在这两种情况下,x轴从左到右。这意味着x和y指定左下角,宽度和高度指向右上方。

此外,每个视图相对于其父视图而不是绝对坐标定位。这意味着如果您将视图定位在x = 10和y = 30,然后将另一个视图放在x = 5和y = 10的内部,则屏幕上的绝对位置为x = 15和y = 40。

如果你可以想象你头脑中的布局,那么你应该能够像这样做,但可能仍然很难做到。


更新

在层次结构的顶部,这些坐标与窗口的大小相关。在iOS上,您有固定的尺寸(iPhone为320×480,iPad为1024×768)。根据设备是横向还是纵向,其中一个是宽度,另一个是高度。您通常会从高度中减去20像素来考虑状态栏。因此,y = 0的坐标将直接位于状态栏下方。

在OS X上,您可以自己更改窗口的大小。我会尝试解释在哪里找到它。

在顶层。导航到“源代码组”并与之交互。在那里你应该找到一个“导航栏组”,一个“表”和一个“滚动区”。与表交互。在该表中,您应找到占位符列表和对象列表。其中一个对象将是“窗口”。选择窗口后,所有检查员都将更改窗口的属性。您可以通过更改为任何检查器然后返回到“大小”检查器来快速跳转到“大小”检查器。对于exaple类型 Alt + Command + 4 然后 Alt + Command + < KBD> 5 。 Size Inspector中的前两个元素应该是Window的宽度和高度。

答案 1 :(得分:0)

这个讨论将不可避免地偏离主题,但这是我的想法:

  1. 考虑专注于其他事情。程序员可以处理很多事情。许多(如果不是大多数)程序员可以享受漫长而成功的职业生涯,而无需安排任何UI元素。坦率地说,除非你有更多的设计师心态,否则我认为这不是特别令人兴奋。

  2. 或者,无论您使用什么工具来排列元素,这个布局都可能保存到某个文件中,可能是以类似XML的方式。找到此文件并进行编辑。

  3. 如果您想要真正擅长安排UI元素,请考虑先招聘几个人为您做多个安排。然后分析数字并提出某种公式,这对于这样的安排将是一个很好的启发式。或者也许某人已经想出了这种配方。