相关疑难解决方法(0)

有没有办法禁用 SwiftUI 的文本自动孤立修复?

我本质上正在构建一个记忆应用程序,点击键盘上的按钮从预定字符串中获取下一个单词,并将其添加到输出的文本中,如下所示:

struct TypingGameView: View {
   @State var text: String = "Some text that wraps at the incorrect spot and is quite annoying."
   @State var outputText: String = ""
   @State private var enteredText: String = ""
   @State private var wordsTapped = 0

   var body: some View {
      ZStack {
         TextField("", text: $enteredText)
            .onChange(of: enteredText) { newValue in
               addToOutputText(newValue)
            }
         Rectangle()
            .foregroundColor(.white)
         VStack {
            Text(outputText)
               .frame(maxWidth: .infinity, alignment: .leading)
               .padding()
            Spacer()
         }
      }
   }

   func addToOutputText(_ val: String) {
      let words = …
Run Code Online (Sandbox Code Playgroud)

swift swiftui

11
推荐指数
1
解决办法
875
查看次数

当有足够的空间时,UILabel 自动换行会将额外的单词带到下一行

在某些情况下,即使有足够的空间, UILabel 似乎也会为新行带来额外的单词,例如,

在此处输入图片说明

如果再加一个词,

在此处输入图片说明

即使我强制标签的宽度变成如下所示,它仍然会将包含“c”的单词移动到下一行,

在此处输入图片说明

我已经尝试扭曲 UILabel 的配置,但似乎它的行为是相同的,除非我将换行模式设置为字符换行,以下是上述情况的配置,

在此处输入图片说明

和约束(在前两种情况下,尾随 ),

在此处输入图片说明

这种特殊行为是否有任何原因,我可以解决这个问题吗?以这种方式让那个空间清空看起来很奇怪。

uilabel ios

8
推荐指数
1
解决办法
2235
查看次数

获取 UILabel 中的每一行文本

我正在尝试将 aUILabel中的每一行添加到数组中,但我使用的代码似乎并不十分准确。

func getLinesArrayOfStringInLabel(label:UILabel) -> [String] {

    guard let text: NSString = label.text as? NSString else { return [] }
    let font:UIFont = label.font
    let rect:CGRect = label.frame

    let myFont: CTFont = CTFontCreateWithName(font.fontName as CFString, font.pointSize, nil)

    let attStr:NSMutableAttributedString = NSMutableAttributedString(string: text as String)
    attStr.addAttribute(NSAttributedStringKey.font, value:myFont, range: NSMakeRange(0, attStr.length))

    let frameSetter:CTFramesetter = CTFramesetterCreateWithAttributedString(attStr as CFAttributedString)

    let path: CGMutablePath = CGMutablePath()
    path.addRect(CGRect(x: 0, y: 0, width: rect.size.width, height: 100000))

    let frame:CTFrame = CTFramesetterCreateFrame(frameSetter, CFRangeMake(0, 0), path, nil)
    let lines …
Run Code Online (Sandbox Code Playgroud)

core-text ios swift

5
推荐指数
1
解决办法
2491
查看次数

标签 统计

ios ×2

swift ×2

core-text ×1

swiftui ×1

uilabel ×1