我的代码看起来像
- (UIVIEw *)tableVIEw:(UItableVIEw *)tableVIEwvIEwForheaderInSection:(NSInteger) section{ CGRect bounds = CGRectMake(0,[tableVIEw frame].size.wIDth,48); UIVIEw *header = [[UIVIEw alloc] initWithFrame:bounds]; UILabel *labelOne = [[UILabel alloc] initWithFrame: CGRectMake(0,bounds.size.wIDth - 80,18)]; UILabel *labelTwo = [[UILabel alloc] initWithFrame: CGRectMake(0,20,18)]; CGRect frameOne = [labelOne frame]; CGRect frameTwo = [labelTwo frame]; [labelTwo setIsAccessibilityElement:NO]; [labelOne setAccessibilityFrame:CGRectUnion(frameOne,frameTwo)]; // ... return header;}
我有两个UILabel,我想把它合并为一个用于VoiceOver的目的.我通过忽略第二个标签并扩展第一个标签的框架以覆盖第二个标签的区域来实现这一点. (第二个标签位于第一个标签的下方.)问题在于获取帧.如果我使用上面显示的代码,可访问性框架的大小正确,但其位置就好像UItableVIEw的标题位于屏幕的左上角.我试着修改代码说
CGRect frameOne = [header convertRect:[labelOne frame] toVIEw:nil];CGRect frameTwo = [header convertRect:[labelTwo frame] toVIEw:nil];
但同样的事情发生了.后一段代码不应该将UILabels的帧转换为窗口相对坐标吗?
我想也许问题在于,当UIVIEw被创建时,它不知道它将被放置在屏幕上的哪个位置(并且作为UItableVIEw的一部分,它可以在整个地方滚动).是否有必要将accessibilityFrame实现为每次调用时检查UIVIEw位置的消息?
解决方法 有一个辅助函数可以帮助你完成这个: UIAccessibilityConvertFrameToScreenCoordinates.这个函数接受一个CGRect并将它从视图的坐标系转换为屏幕坐标. 总结以上是内存溢出为你收集整理的ios – 设置父视图将移动的元素的accessibilityFrame全部内容,希望文章能够帮你解决ios – 设置父视图将移动的元素的accessibilityFrame所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)