我在 SwiftUI 2.0 和 iOS14 中遇到了非常奇怪的行为。
当键盘出现在屏幕上时,会自动调用其他选项卡视图的 OnAppear 方法。
但是,这很好用 Xcode 11.7
这是产生上述错误的代码。
struct ContentView: View {
var body: some View {
TabView {
DemoView(screenName: "Home")
.tabItem {
Image.init(systemName: "star.fill")
Text("Home")
}
DemoView(screenName: "Result")
.tabItem {
Image.init(systemName: "star.fill")
Text("Result")
}
DemoView(screenName: "More")
.tabItem {
Image.init(systemName: "star.fill")
Text("More")
}
}
}
}
struct DemoView:View {
@State var text:String = ""
var screenName:String
var body: some View {
VStack{
Text(screenName)
.font(.title)
TextField("Buggy Keyboard Issue", text: $text)
.textFieldStyle(RoundedBorderTextFieldStyle())
Text("Issue : When keyboard …Run Code Online (Sandbox Code Playgroud) 我在我的视图中使用 TextField,当它成为第一响应者时,它会离开视图,如下面的 GIF 所示。
有什么办法可以摆脱这种行为吗?
这是我的代码
NavigationView(content: {
ZStack{
MyTabView(selectedIndex: self.$index)
.view(item: self.item1) {
NewView(title: "Hello1").navigationBarTitle("")
.navigationBarHidden(true)
}
.view(item: self.item2) {
NewView(title: "Hello2").navigationBarTitle("")
.navigationBarHidden(true)
}
.view(item: self.item3) {
NewView(title: "Hello3").navigationBarTitle("")
.navigationBarHidden(true)
}
}.navigationBarHidden(true)
.navigationBarTitle("")
}).ignoresSafeArea(.keyboard, edges: .bottom)
Run Code Online (Sandbox Code Playgroud)
// 新视图
struct NewView:View {
@State var text:String = ""
var title:String
var body: some View {
VStack {
Spacer()
Text("Hello")
TextField(title, text: self.$text)
.textFieldStyle(RoundedBorderTextFieldStyle())
}.padding()
.onAppear {
debugPrint("OnApper \(self.title)")
}
}
}
Run Code Online (Sandbox Code Playgroud) 我在 SwiftUI 2.0 和 Xcode 12 中使用 UITabBarController,但似乎键盘盒出现了一些意外行为。正如您从下面的 GIF 中看到的,当键盘出现在第一个选项卡中时,调用了其他 2 个选项卡视图的 OnAppear。这导致了这个问题,因为我有一个写在上面的 API 调用出现。
另外,有什么方法可以关闭 Xcode 12 的默认视图偏移行为。
这是我的内容视图代码。
struct ContentView: View {
@State private var index:Int = 0
var menuItems:[String] = ["Item 1", "Item 2", "Item 3"]
var body: some View {
NavigationView(content: {
ZStack{
MyTabView(selectedIndex: self.$index)
.view(item: self.item1) {
NewView(title: "Hello1").navigationBarTitle("")
.navigationBarHidden(true)
}
.view(item: self.item2) {
NewView(title: "Hello2").navigationBarTitle("")
.navigationBarHidden(true)
}
.view(item: self.item3) {
NewView(title: "Hello3").navigationBarTitle("")
.navigationBarHidden(true)
}
}.navigationBarHidden(true)
.navigationBarTitle("")
})
}
var item1:MyTabItem {
var item = …Run Code Online (Sandbox Code Playgroud) 我正在一个应用程序中工作,我需要添加下划线UITabbarItem.
所以我想UITabbarItem在默认UITabbarcontroller的iOS 下添加下划线.
我已经创建了子类UITabbarcontroller但没有找到任何方法来添加行.
我想做像下图这样的事情.
如果有人对此有任何想法,请在这里分享.
我正在尝试剪切图像,正如我们看到的 UI 一样,它看起来不错,但实际上它不会剪切图像,从而导致其他 UI 元素无响应。
这是我正在使用的代码。
struct ImageContentView: View {
var urls:[String] = [
"https://lh3.googleusercontent.com/proxy/80im-IBfLODpLDj8d02uEpSVIhqdjen6H6CeFwgRBxeua-Dgw0R3WONFj1Gk8CwB_MufmC9rQ8qHjyWMejwFcJ1PA2s8AAu5WVsmJA=s0-d",
"https://wallpaperaccess.com/full/530919.jpg"
]
var body: some View {
ScrollView{
VStack{
Button(action: {
}, label: {
Text("Hello")
})
VStack(spacing: 20.0) {
ForEach(self.urls, id:\.self) { url in
WebImage(url: URL.init(string: url)!)
.resizable()
.aspectRatio(contentMode: ContentMode.fill)
.frame(height: UIScreen.main.bounds.size.width * 0.5)
.clipped()
.cornerRadius(10.0)
.shadow(color: Color.red, radius: 10.0, x: 0, y: 0)
}
}.padding()
}
}
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Objective C使用适用于Mac OSX应用程序的L2TP协议连接到VPN的应用程序.
我对此进行了大量搜索,但未找到任何正确的示例或教程.
我找到了用于mac os vpn连接的halo/macosvpn,但它是我希望在我的应用程序中使用的命令行工具.
例如,如果我传递服务器ID,共享密钥,用户名,密码,那么我的mac应该自动连接到该VPN服务器.
任何帮助将不胜感激...
我试图从 URL 播放音频。我尝试了 AVPlayer 和 AVAudioPlayer 但它们都不起作用。
这是我正在尝试播放的URL。
这是我正在使用的代码。
// AVPlayer Code
self.avPlayerItem = AVPlayerItem.init(url: urlOfAudio)
self.avPlayer = AVPlayer.init(playerItem: avPlayerItem)
self.avPlayer.volume = 1.0
self.avPlayer.play()
// AVAudioPlayer
if let url = URL.init(string: escapeCharactorString){
do {
self.playerReference = try AVAudioPlayer.init(contentsOf: url)
guard let player = playerReference else {
return
}
player.volume = 1.0
player.prepareToPlay()
player.numberOfLoops = -1
player.play()
} catch let error {
}
}
Run Code Online (Sandbox Code Playgroud)
他们都没有为我工作。请让我知道我哪里出错了。
我试图使视图的中心部分像相机覆盖层一样透明。如下图所示,中心部分是透明的,而其余区域是黑色且不透明的。
我尝试了下面的代码。
Rectangle()
.fill(Color.red.opacity(0.5))
.mask(
Ellipse()
.fill(
Color.green.opacity(0.5)
)
.padding()
)
}
Run Code Online (Sandbox Code Playgroud)
但输出是这样的。
任何帮助将不胜感激。
谢谢
我正在使用NSTableView的Cocoa应用程序上工作。
现在,我希望通过用户从角落拖动应用程序或单击缩放按钮来在用户调整窗口大小或最大化窗口时自动调整表视图中列的宽度。
任何帮助将不胜感激。
swiftui ×5
keyboard ×3
swift ×3
ios ×2
tabview ×2
textfield ×2
xcode ×2
avfoundation ×1
avplayer ×1
clipped ×1
cocoa ×1
imageview ×1
ios14 ×1
l2tp ×1
macos ×1
mask ×1
nstableview ×1
objective-c ×1
osx-yosemite ×1
sdwebimage ×1
shapes ×1
swift3 ×1
uitabbaritem ×1
vpn ×1
xcode11 ×1