小编XLE*_*_22的帖子

在单行UILabel旁边显示NSTextAttachment图像

我想将NSTextAttachment图像附加到我的属性字符串并使其垂直居中.

我使用以下代码来创建我的字符串

        NSMutableAttributedString *str = [[NSMutableAttributedString alloc] initWithString:DDLocalizedString(@"title.upcomingHotspots") attributes:attrs];
        NSTextAttachment *attachment = [[NSTextAttachment alloc] init];
        attachment.image = [[UIImage imageNamed:@"help.png"] imageScaledToFitSize:CGSizeMake(14.f, 14.f)];
        cell.textLabel.attributedText = [str copy];
Run Code Online (Sandbox Code Playgroud)

但是,图像看起来与单元格textLabel的顶部对齐.

在此输入图像描述

如何更改绘制附件的矩形?

objective-c uilabel nstextattachment ios swift

106
推荐指数
8
解决办法
3万
查看次数

iOS画外音状态

我正在尝试为已经开发的iOS应用添加辅助功能.

如果iPhone设置的辅助功能菜单中的VoiceOver选项打开,并且如果画外音关闭则不显示,我希望它们显示一些UI功能(例如按钮).

有没有办法检查画外音选项是否打开?

accessibility ios voiceover uiaccessibility

63
推荐指数
3
解决办法
2万
查看次数

从UITextView和NSLayoutManager获取行信息

为了支持该UIAccessibilityReadingContent协议,我需要我的UITextView来回答有关其行的问题.这些是我需要实现的协议的方法:

  • accessibilityLineNumberForPoint: < - 提供坐标,返回行号
  • accessibilityContentForLineNumber: < - 返回给定行的文本
  • accessibilityFrameForLineNumber: < - 给定行号,返回其帧
  • accessibilityPageContent< - 整个文本内容.我有.:)

我认为NSLayoutManager可以帮助我,但我对它没有经验.我已经想到了一些(我认为),但仍然需要一些帮助.

Apple有一些示例代码(此处)可以获取文本视图中的行数:

NSLayoutManager *layoutManager = [textView layoutManager];
unsigned numberOfLines, index, numberOfGlyphs =
        [layoutManager numberOfGlyphs];
NSRange lineRange;
for (numberOfLines = 0, index = 0; index < numberOfGlyphs; numberOfLines++){
    (void) [layoutManager lineFragmentRectForGlyphAtIndex:index
            effectiveRange:&lineRange];
    index = NSMaxRange(lineRange);
}
Run Code Online (Sandbox Code Playgroud)

我用lineRange上面的数字来计算,我可以使用这个方法计算行数NSLayoutManager:

- (NSRect)boundingRectForGlyphRange:(NSRange)glyphRange inTextContainer:(NSTextContainer *)container
Run Code Online (Sandbox Code Playgroud)

鉴于lineRanges我应该能够计算一个点的行号(通过找到lineRange包含字形索引的行号):

- (NSUInteger)glyphIndexForPoint:(CGPoint)point inTextContainer:(NSTextContainer *)container fractionOfDistanceThroughGlyph:(CGFloat *)partialFraction
Run Code Online (Sandbox Code Playgroud)

剩下的是,如果给出行号,我如何得到一行(作为一个NSString)的内容?

objective-c nslayoutmanager ios voiceover textkit

12
推荐指数
1
解决办法
2538
查看次数

VoiceOver不会将元素正确地滚出视图

带有垂直滚动内容的HTML固定页脚(我希望标准的东西,溢出:自动等).

当VoiceOver焦点击中可见视图底部的元素时,通过右滑动VoiceOver手势垂直滚动元素时,VoiceOver焦点会正确地移动元素但滚动条仅滚动元素高度的一半,因此VoiceOver焦点移动到可见光下方区域.

编辑更新的片段,在前一个容器高度小于50%,为了清晰而更新,以显示高度无关紧要.

提前致谢.

.scrollContainer {
  position: absolute;
  overflow: auto;
  top: 0;
  width: 100%;
  bottom: 100px;
}

.rightData {
  float: right;
  padding-right: 10px;
}

.stepData {
  padding: 0px;
  list-style-type: none;
  margin-top: 0;
  margin-bottom: 0;
}

.stepData > li {
  height: 42px;
  border-top: 1px solid black;
  padding: 12px 20px;
  font-size: 1.25em;
}

#footer {
  position: absolute;
  height: 100px;
  width: 100%;
  bottom: 0;
  background-color: cyan;
}
Run Code Online (Sandbox Code Playgroud)
<div style="height:500px;">
 <div id="container" class="scrollContainer">
        <ul class="stepData" style="padding:0px;">
            <li role="button" aria-label="date">06/01<span class="rightData" aria-label="steps">1001</span></li>
            <li role="button" …
Run Code Online (Sandbox Code Playgroud)

html voiceover

12
推荐指数
1
解决办法
763
查看次数

在Swift 3/iOS10中使用Dynamic Type和自定义字体的更好方法

我试过两种方法:

方法1:

label.font = UIFont.preferredFont(forTextStyle: UIFontTextStyle.body)
label.adjustsFontForContentSizeCategory = true
Run Code Online (Sandbox Code Playgroud)

即使在"设置"中更改了首选文本大小,文本大小也会自动更改,即使在我返回应用程序之前,这也可以正常工作.它只适用于系统字体(旧金山).

方法2:

要使用自定义字体,我添加了一个扩展名UIFontDescriptor:

//from this answer http://stackoverflow.com/a/35467158/2907715
extension UIFontDescriptor {

    private struct SubStruct {
        static var preferredFontName: String = "Avenir-medium"
    }

    static let fontSizeTable : NSDictionary = [
        UIFontTextStyle.headline: [
            UIContentSizeCategory.accessibilityExtraExtraExtraLarge: 23,
            UIContentSizeCategory.accessibilityExtraExtraLarge: 23,
            UIContentSizeCategory.accessibilityExtraLarge: 23,
            UIContentSizeCategory.accessibilityLarge: 23,
            UIContentSizeCategory.accessibilityMedium: 23,
            UIContentSizeCategory.extraExtraExtraLarge: 23,
            UIContentSizeCategory.extraExtraLarge: 21,
            UIContentSizeCategory.extraLarge: 19,
            UIContentSizeCategory.large: 17,
            UIContentSizeCategory.medium: 16,
            UIContentSizeCategory.small: 15,
            UIContentSizeCategory.extraSmall: 14
        ],
        UIFontTextStyle.subheadline: [
            UIContentSizeCategory.accessibilityExtraExtraExtraLarge: 21,
            UIContentSizeCategory.accessibilityExtraExtraLarge: 21,
            UIContentSizeCategory.accessibilityExtraLarge: 21,
            UIContentSizeCategory.accessibilityLarge: 21,
            UIContentSizeCategory.accessibilityMedium: 21, …
Run Code Online (Sandbox Code Playgroud)

fonts ios swift uifontdescriptor dynamic-type-feature

9
推荐指数
1
解决办法
6346
查看次数

如何在 SwiftUI 中缩放系统字体以支持动态类型?

在 UIKit 中,我可以像这样更改 UILabel 的字体大小以支持使用系统字体的动态类型:

UIFontMetrics.default.scaledFont(for: UIFont.systemFont(ofSize: 16))
Run Code Online (Sandbox Code Playgroud)

我错了还是没有办法在 SwiftUI 中做这样的事情?如果我想使用系统字体但也支持动态类型,我可以只使用默认字体样式 .title 等吗?

这个来自 HackingWithSwift 的解决方案似乎只适用于自定义字体,对吗?

在此先感谢您的任何建议!

ios swiftui dynamic-type-feature

9
推荐指数
2
解决办法
2038
查看次数

是否可以检测iPhone上的网页中是否启用了VoiceOver?

我们目前正在使用touchmaplite JavaScript库在我们的移动网络应用上测试部署"滑动"地图(即,用手指在触摸屏设备上移动的地图).此地图在我们的网页中嵌入为iframe.

当我们在配备VoiceOver的iPhone上测试此设置时,我们发现VoiceOver在地图上"卡住",并且不会读取它(或者确实滚过它).这对我们来说是一个很大的绊脚石,我们不希望在我们的网站上提供可访问性支持.

是否可以将一个元素标记为被VoiceOver"忽略",或者检测是否以任何其他方式启用VoiceOver(可能是JS),然后隐藏/删除iframe?

谢谢

iphone accessibility voiceover web

7
推荐指数
1
解决办法
1827
查看次数

在iOS 10中adjustsFontForContentSizeCategory的目的是什么?

我在标准UITableViewCell的textLabel上设置adjustsFontForContentSizeCategory.当我转到"设置","常规","辅助功能","更大文本"来更改字体大小然后再返回到我的应用程序时,UITableViewCell的UILabel会相应地进行更改.这应该不会发生,是吗?

adjustsFontForContentSizeCategory的目的究竟是什么?如何防止UITableViewCells标签更改其字体大小?

fonts accessibility ios dynamic-type-feature

7
推荐指数
1
解决办法
4260
查看次数

Apple 系统字体大小的预览(例如正文、标注、标题等)?

Text例如,当选择 的字体时,我们可以使用以下方法更改字体大小:

Text("Hello world").font(.system(.body))
Run Code Online (Sandbox Code Playgroud)

在本例中,body 是Font.TextStyle具有以下选项的 a:

        case largeTitle

        case title

        case headline

        case subheadline

        case body

        case callout

        case footnote

        case caption
Run Code Online (Sandbox Code Playgroud)

在决定为组件选择哪种字体时,我想了解该字体的外观。我发现这个苹果页面详细介绍了一些字体的规格:

在此输入图像描述

但是,它们与 Font.TextStyle 并不 1:1 匹配,并且不包含预览。是否有任何地方可以预览一些更常见的动态类型尺寸(例如 xSmall、xxxLarge)?

ios swift dynamic-type-feature

7
推荐指数
1
解决办法
4763
查看次数

如何设置辅助功能容器以使手势正常工作?

我有一个具有此布局的视图控制器(请注意,黄色视图和表格视图是同级视图):

\n

在此输入图像描述

\n

我希望黄色视图充当容器,所以我在以下位置执行此操作viewDidLoad

\n
yellowView.isAccessibilityElement = true\nview.accessibilityElements = [yellowView!, tableView!]\n
Run Code Online (Sandbox Code Playgroud)\n

在 Voice Over 中,我从辅助功能转子中选择“Containers”,并期望能够上下滑动以从黄色视图移动到表格视图并再次返回:

\n

黄色(向下滑动) \xe2\x86\x92 TableView(向下滑动) \xe2\x86\x92 Tabbar(向上滑动) \xe2\x86\x92 tableView(向上滑动) \xe2\x86\x92 黄色

\n

然而,情况并非如此 - 在tableView获得焦点后,向上滑动不会将焦点移动到黄色视图,它只是停在那里。向下滑动,移动到选项卡栏 - 似乎我的自定义视图被忽略为容器。

\n

我尝试了许多添加超级视图并isAccessibilityElement = false对其进行设置的组合,但似乎没有任何效果。

\n

有人知道如何解决这个问题吗?

\n

cocoa-touch accessibility ios voiceover uiaccessibility

7
推荐指数
1
解决办法
1980
查看次数