- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
如果您根据标题来到这个问题但对蒙古语不感兴趣,您可能正在寻找这个问答:
我一直在学习 Swift,以便为 traditional Mongolian 开发 iOS 应用程序.问题是传统的蒙古文是从上到下、从左到右竖写的。我的问题是如何在垂直显示文本的同时进行换行?
如果您稍等片刻,我会尝试更清楚地解释问题。下面是我想要实现的那种 TextView 的图像。以防外国脚本让您失望,我已经包含了遵循相同模式的英文文本。事实上,如果应用程序有任何英文文本要显示,它应该是这样的。
对于简单的单行 UILabel,顺时针旋转 90 度即可。但是,对于多行 UITextView,我需要处理换行。如果我只是做一个简单的 90 度旋转,那么写的第一件事最终会出现在最后一行。
到目前为止我已经制定了一个我认为可以克服这个问题的计划:
这应该会处理文本换行。
我可以做镜像字体。但是,我不知道如何对 UITextView 的旋转和镜像进行 Swift 编码。我发现以下链接似乎提供了部分解决方案的提示,但它们都在 Objective C 中而不是在 Swift 中。
应用商店中有传统的蒙古语应用程序(如 this 和 this ),但我还没有找到任何人分享他们的源代码,所以我不知道他们在幕后做了什么显示文本。我计划将我的代码开源,以便将来其他人为数百万阅读传统蒙古语的人开发应用程序并不那么困难。如果您能为这项工作提供任何帮助,我将不胜感激,蒙古人民也将不胜感激。即使您不了解自己,对这个问题进行投票以使其更加明显也会有所帮助。
@sangonz 的答案仍然是一个很好的答案,但我暂时将其取消标记为已接受的答案,因为我无法让所有内容正常工作。具体来说:
到目前为止I have been using the original method我在上面提出了建议,但我真正想要的是获得类似于@sangonz 提议的东西。
我现在也在考虑替代方法,比如
UITextView
最佳答案
编辑:这就是我最终做到的。
这是我的 GitHub 中的一个非常基本的实现:Vertical-Text-iOS .
没什么特别的,但它确实有效。最后我不得不混合使用 TextKit 和图像处理。看一下代码。它涉及:
NSTextContainer
以获得正确的文本尺寸。UIView
以呈现文本,对每一行应用仿射变换,并使用 NSLayoutManager
进行呈现以保留所有 TextKit 功能。保留所有原生文本优势(例如突出显示、选择...)的正确方法是使用标准 TextKit API。您提出的方法会破坏所有这些,或者可能会导致奇怪的行为。
但是,iOS 中的 TextKit 似乎还不支持开箱即用的垂直方向,但它已为此做好了准备。附带说明一下,在 OS X 中它在一定程度上受到支持,您可以调用 textView.setLayoutOrientation(.Vertical)
,但它仍然有一些限制。
The
NSTextLayoutOrientationProvider
protocol defines an interface providing the default orientation for text laid out in a conforming object, in absence of an explicitNSVerticalGlyphFormAttributeName
attribute. The only UIKit class that implements this interface isNSTextContainer
, whose default implementation returnsNSTextLayoutOrientationHorizontal
. AnNSTextContainer
subclass that handles vertical text could set this property toNSTextLayoutOrientationVertical
to support the custom layout orientation logic.
来源:UIKit > NSTextLayoutOrientationProvider
Protocol Reference for iOS
总而言之,您应该开始子类化 NSTextContainer
,您将不得不处理 NSLayoutManager
和 NSTextContainer
很多。
另一方面,如果您决定遵循自定义文本呈现,我建议采用以下方法。
CGImage
。UIImage
并设置正确的 UIImageOrientation
值。UIScrollView
。请注意此方法会呈现整个文本,因此不要将其用于很长的文本。如果您需要这样做,您将需要考虑一种平铺方法。 watch WWDC 2013 > 217 - Exploring Scroll Views on iOS 7 .
祝你好运!
更新:(图片来自github项目)
关于ios - 你如何在 Swift 中为 iOS 制作垂直文本 UILabel 和 UITextView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28544714/
有没有办法在 .swift 文件(编译成 .swift 模块)中声明函数,如下所示: 你好.swift func hello_world() { println("hello world")
我正在尝试使用 xmpp_messenger_ios 和 XMPPFramework 在 iOS 上执行 MUC 这是加入房间的代码。 func createOrJoinRoomOnXMPP()
我想在我的应用程序上创建一个 3D Touch 快捷方式,我已经完成了有关快捷方式本身的所有操作,它显示正确,带有文本和图标。 当我运行这个快捷方式时,我的应用程序崩溃了,因为 AppDelegate
我的代码如下: let assetTag = Expression("asset_tag") let query2 = mdm.select(mdm[assetTag],os, mac, lastRe
我的 swift 代码如下所示 Family.arrayTuple:[(String,String)]? = [] Family.arrayTupleStorage:String? Family.ar
这是我的 JSON,当我读取 ord 和 uniq 数据时出现错误 let response2 : [String: Any] = ["Response":["status":"SUCCESS","
我想将 swift 扩展文件移动到 swift 包中。但是,将文件移动到 swift 包后,我遇到了这种错误: "Type 'NSAttributedString' has no member 'ma
使用CocoaPods,我们可以设置以下配置: pod 'SourceModel', :configurations => ['Debug'] 有什么方法可以用 Swift Package Manag
我正在 Xcode 中开发一个 swift 项目。我将其称为主要项目。我大部分都在工作。我在日期选择器、日期范围和日期数学方面遇到了麻烦,因此我开始了另一个名为 StarEndDate 的项目,其中只
这是 ObjectiveC 代码: CCSprite *progress = [CCSprite spriteWithImageNamed:@"progress.png"]; mProgressBar
我正在创建一个命令行工具,在 Xcode 中使用 Swift。我想使用一个类似于 grunt 的配置文件确实如此,但我希望它是像 Swift 包管理器的 package.swift 文件那样的快速代码
我假设这意味着使用系统上安装的任何 swift 运行脚本:#!/usr/bin/swift 如何指定脚本适用的解释器版本? 最佳答案 Cato可用于此: #!/usr/bin/env cato 1.2
代码说完全没问题,没有错误,但是当我去运行模拟器的时候,会出现这样的字样: (Swift.LazyMapCollection (_base:[ ] 我正在尝试创建一个显示报价的报价应用。 这是导入
是否可以在运行 Swift(例如 Perfect、Vapor、Kitura 等)的服务器上使用 RealmSwift 并使用它来存储数据? (我正在考虑尝试将其作为另一种解决方案的替代方案,例如 no
我刚开始学习编程,正在尝试完成 Swift 编程书中的实验。 它要求““编写一个函数,通过比较两个 Rank 值的原始值来比较它们。” enum Rank: Int { case Ace = 1 ca
在您将此问题标记为重复之前,我检查了 this question 它对我不起作用。 如何修复这个错误: error: SWIFT_VERSION '5.0' is unsupported, suppo
从 Xcode 9.3 开始,我在我的模型中使用“Swift.ImplicitlyUnwrappedOptional.some”包裹了我的字符串变量 我不知道这是怎么发生的,但它毁了我的应用程序! 我
这个问题在这里已经有了答案: How to include .swift file from other .swift file in an immediate mode? (2 个答案) 关闭 6
我正在使用 Swift Package Manager 创建一个应用程序,我需要知道构建项目的配置,即 Debug 或 Release。我试图避免使用 .xcodeproj 文件。请有人让我知道这是否
有一个带有函数定义的文件bar.swift: func bar() { println("bar") } 以及一个以立即模式运行的脚本foo.swift: #!/usr/bin/xcrun s
我是一名优秀的程序员,十分优秀!