tvOS SwiftUI TextField输入内容后出现错位问题求助
tvOS SwiftUI TextField输入内容后出现错位问题求助
嘿,各位大佬好!我最近在做tvOS的SwiftUI项目时碰到个挺闹心的问题,想请大家支支招:
我用了一个TextField,占位符“Search the web...”显示的时候对齐得特别规整,但只要用户一输入内容,这个输入框就会莫名多出一点高度,而且输入的文字还会往上偏移,看起来特别别扭。我感觉这个问题的根源和之前看到的某个UIKit相关问题类似,但那个解决方案是针对UIKit的,我现在需要SwiftUI里的修复思路,有没有人能给点建议呀?
对了,我的代码没什么复杂逻辑,就算去掉那些样式参数,问题还是存在,代码如下:
TextField("Search the web...", text: $query) .font(.system(size: 40, weight: .semibold)) .focused($searchFocused) .background( Color("Background Reverse") .cornerRadius(10) .opacity(searchFocused ? 0 : 0.25) )
我自己瞎琢磨了几个可能的方向,不知道有没有用:
- 试试给TextField固定高度,比如加上
.frame(height: 60)(具体数值可以根据你的字体大小调整),毕竟tvOS上的TextField可能在获取输入后会自动调整内在内容尺寸,固定高度能强制约束它的布局 - 调整文字的垂直对齐方式,比如加上
.multilineTextAlignment(.center),或者用alignmentGuide自定义垂直对齐的基准线,让输入文字和占位符保持同一位置 - 如果上面的方法都不管用,或许可以考虑用
UIViewRepresentable封装一个UIKit的UITextField,虽然麻烦点,但能完全掌控布局细节,避开SwiftUI TextField的这个小bug
内容来源于stack exchange
相关产品推荐
相关产品推荐

