我想将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的顶部对齐.

如何更改绘制附件的矩形?
我正在尝试为已经开发的iOS应用添加辅助功能.
如果iPhone设置的辅助功能菜单中的VoiceOver选项打开,并且如果画外音关闭则不显示,我希望它们显示一些UI功能(例如按钮).
有没有办法检查画外音选项是否打开?
为了支持该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)的内容?
带有垂直滚动内容的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)我试过两种方法:
label.font = UIFont.preferredFont(forTextStyle: UIFontTextStyle.body)
label.adjustsFontForContentSizeCategory = true
Run Code Online (Sandbox Code Playgroud)
即使在"设置"中更改了首选文本大小,文本大小也会自动更改,即使在我返回应用程序之前,这也可以正常工作.但它只适用于系统字体(旧金山).
要使用自定义字体,我添加了一个扩展名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) 在 UIKit 中,我可以像这样更改 UILabel 的字体大小以支持使用系统字体的动态类型:
UIFontMetrics.default.scaledFont(for: UIFont.systemFont(ofSize: 16))
Run Code Online (Sandbox Code Playgroud)
我错了还是没有办法在 SwiftUI 中做这样的事情?如果我想使用系统字体但也支持动态类型,我可以只使用默认字体样式 .title 等吗?
这个来自 HackingWithSwift 的解决方案似乎只适用于自定义字体,对吗?
在此先感谢您的任何建议!
我们目前正在使用touchmaplite JavaScript库在我们的移动网络应用上测试部署"滑动"地图(即,用手指在触摸屏设备上移动的地图).此地图在我们的网页中嵌入为iframe.
当我们在配备VoiceOver的iPhone上测试此设置时,我们发现VoiceOver在地图上"卡住",并且不会读取它(或者确实滚过它).这对我们来说是一个很大的绊脚石,我们不希望在我们的网站上提供可访问性支持.
是否可以将一个元素标记为被VoiceOver"忽略",或者检测是否以任何其他方式启用VoiceOver(可能是JS),然后隐藏/删除iframe?
谢谢
我在标准UITableViewCell的textLabel上设置adjustsFontForContentSizeCategory.当我转到"设置","常规","辅助功能","更大文本"来更改字体大小然后再返回到我的应用程序时,UITableViewCell的UILabel会相应地进行更改.这应该不会发生,是吗?
adjustsFontForContentSizeCategory的目的究竟是什么?如何防止UITableViewCells标签更改其字体大小?
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)?
我有一个具有此布局的视图控制器(请注意,黄色视图和表格视图是同级视图):
\n\n我希望黄色视图充当容器,所以我在以下位置执行此操作viewDidLoad:
yellowView.isAccessibilityElement = true\nview.accessibilityElements = [yellowView!, tableView!]\nRun 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获得焦点后,向上滑动不会将焦点移动到黄色视图,它只是停在那里。向下滑动,移动到选项卡栏 - 似乎我的自定义视图被忽略为容器。
我尝试了许多添加超级视图并isAccessibilityElement = false对其进行设置的组合,但似乎没有任何效果。
有人知道如何解决这个问题吗?
\n