この単純なNavigationView
:
struct ContentView : View {
var body: some View {
NavigationView {
VStack {
NavigationLink("Push Me", destination: Text("PUSHED VIEW"))
}
}
}
}
_
宛先ビューがスタックにプッシュ/ポップされたときに、NavigationView
アニメーションを無効にする方法を見つけましたか?
IOS2.0以降、これはUIKITで可能でした!フレームワークから尋ねるのはあまりにも多くないと思います。私はすべてのビュー(すなわち、NavigationView
コンテナ、宛先ビュー、NavigationLink
など)であらゆる種類の修飾子を試しました
これらは私が試した修飾子のいくつかです。
.animation(nil)
_
.transition(.identity)
_
.transaction { t in t.disablesAnimations = true }
_
.transaction { t in t.animation = nil }
_
違いはありません。私はEnvironmentValues
のいずれかに役立つものを見つけませんでした:-(
私は非常に明白なものを見逃していますか、それともまだそこにはありませんか?
Xcode 11.3 :
今すぐNavigationView
アニメーションを無効にするための修飾子はありません。
以下のように、Struct init()
を使用してアニメーションを無効にすることができます。
struct ContentView : View {
init(){
UINavigationBar.setAnimationsEnabled(false)
}
var body: some View {
NavigationView {
VStack {
NavigationLink("Push Me", destination: Text("PUSHED VIEW"))
}
}
}
}
_
私は最近_swiftui-navigation-stack
_( https://github.com/biobeats/swiftui-navigation-stack https://------)を作成しました。 NavigationStackView
、標準NavigationView
のナビゲーション動作を模倣するビューでは、便利な機能を追加します。たとえば、質問でKontikiから要求された遷移アニメーションをNavigationStackView
を使用することができます。 NavigationStackView
を作成するときは_.none
transitionType
を指定するだけです。
_struct ContentView : View {
var body: some View {
NavigationStackView(transitionType: .none) {
ZStack {
Color.yellow.edgesIgnoringSafeArea(.all)
PushView(destination: View2()) {
Text("Push")
}
}
}
}
}
struct View2: View {
var body: some View {
ZStack {
Color.green.edgesIgnoringSafeArea(.all)
PopView {
Text("POP")
}
}
}
}
_
PushView
とPopView
プッシュビューとPOPビューを許可する2つのビューです(Swiftui NavigationLink
)。これが完全な例です。
_import SwiftUI
import NavigationStack
struct ContentView : View {
var body: some View {
NavigationStackView(transitionType: .none) {
ZStack {
Color.yellow.edgesIgnoringSafeArea(.all)
PushView(destination: View2()) {
Text("Push")
}
}
}
}
}
struct View2: View {
var body: some View {
ZStack {
Color.green.edgesIgnoringSafeArea(.all)
PopView {
Text("POP")
}
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
_
結果は次のとおりです。
あなたがこのオープンソースプロジェクトの改善にあなたが私に参加したらそれは素晴らしいでしょう。