SwiftUI-画布超出屏幕宽度-应用被拒绝
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SwiftUI-画布超出屏幕宽度-应用被拒绝相关的知识,希望对你有一定的参考价值。
由于登录屏幕超出了iPad显示屏的范围,我的应用两次被拒绝提交到应用商店。我试图复制该问题,但无法在模拟器或物理iPad上进行]
Apple向我发送了以下回复
From Apple
4. Design: Preamble
Guideline 4.0 - Design
We noticed that the login screen of your app was still crowded or laid out in a way that made it difficult to use your app.
We launched the app on iPad (6th generation) running ios 13.1.3 on Wifi.
Next Steps
To resolve this issue, please revise your app to ensure that the content and controls on the screen are easy to read and interact with.
Resources
For more information, please review the following resources on the iOS Developer Center page:
- UI Do's and Don'ts
- iOS Human Interface Guidelines
- UIKit
Please see attached screenshot for details.
我无法复制。这是我的代码:
Login.swift
import SwiftUI struct Login: View { @EnvironmentObject var session: SessionStore @ObservedObject private var kGuardian = KeyboardGuardian(textFieldCount: KeyboardGuardian.KeyboardSlots.count.rawValue) @State var email: String = "" @State var password: String = "" @State var loading = false @State var error = false func getUser () { session.listen() } func signIn () { loading = true error = false session.signIn(email: email, password: password) { (result, error) in self.loading = false if error != nil { self.error = true } else { self.email = "" self.password = "" } } } var body: some View { VStack { Image("Cloud Pager") .resizable() .foregroundColor(.white) .aspectRatio(contentMode: ContentMode.fill) .padding() Text("Cloud Pager") .font(.largeTitle) .foregroundColor(.white) .bold() .padding(Edge.Set.bottom, 30) Spacer() ZStack(alignment: .leading) { Text("Email") .foregroundColor(email.isEmpty ? .white : .black) .fontWeight(email.isEmpty ? .regular : .bold) .padding(.leading, 10) .offset(y: email.isEmpty ? 0 : -30) TextField("", text:$email) .background(Color.clear) .foregroundColor(.white) .textContentType(.emailAddress) .keyboardType(.emailAddress) .padding(.leading, 10) .padding(.trailing, 10) } Rectangle() .frame(height: 3.0, alignment: .bottom) .foregroundColor(Color.white) .padding(.bottom, 40) .padding(.leading, 10) .padding(.trailing, 10) ZStack(alignment: .leading) { Text("Password") .foregroundColor(password.isEmpty ? .white : .black) .fontWeight(password.isEmpty ? .regular : .bold) .padding(.leading, 10) .offset(y: password.isEmpty ? 0 : -30) SecureField("", text:$password) .background(Color.clear) .foregroundColor(.white) .textContentType(.password) .padding(.leading, 10) .padding(.trailing, 10) } Rectangle() .frame(height: 3.0, alignment: .bottom) .foregroundColor(Color.white) .padding(.bottom, 50) .padding(.leading, 10) .padding(.trailing, 10) VStack { Button(action: signIn) { HStack(alignment: .center) { Spacer() if loading { ActivityIndicator() } else { Text("Sign In") .foregroundColor(.blue) .bold() } Spacer() } }.padding().background(Color.white).cornerRadius(30.0) } .padding(Edge.Set.bottom, 8) } .padding() .background(Color.blue.edgesIgnoringSafeArea(.all)) .statusBar(hidden: true) .onAppear(perform: getUser) .offset(y: kGuardian.slide).animation(.easeInOut(duration: 0.5)) } } struct ActivityIndicator: UIViewRepresentable { func makeUIView(context: Context) -> UIActivityIndicatorView { let v = UIActivityIndicatorView() return v } func updateUIView(_ activityIndicator: UIActivityIndicatorView, context: Context) { activityIndicator.startAnimating() } } struct Login_Previews: PreviewProvider { static var previews: some View { Login() .environmentObject(SessionStore()) } }
[我在每台iPad模拟器上(和第六代物理iPad上)运行应用程序,都无法复制以上屏幕截图。我的总是这样:
任何人都可以弄清楚这里发生了什么。我的应用程序设置仅在iPhone和iPad设备上设置为纵向[]
Info.plist
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>CFBundleDevelopmentRegion</key> <string>$(DEVELOPMENT_LANGUAGE)</string> <key>CFBundleExecutable</key> <string>$(EXECUTABLE_NAME)</string> <key>CFBundleIdentifier</key> <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> <key>CFBundleInfoDictionaryVersion</key> <string>6.0</string> <key>CFBundleName</key> <string>$(PRODUCT_NAME)</string> <key>CFBundlePackageType</key> <string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string> <key>CFBundleShortVersionString</key> <string>$(MARKETING_VERSION)</string> <key>CFBundleVersion</key> <string>1</string> <key>LSRequiresIPhoneOS</key> <true/> <key>UIApplicationSceneManifest</key> <dict> <key>UIApplicationSupportsMultipleScenes</key> <false/> <key>UISceneConfigurations</key> <dict> <key>UIWindowSceneSessionRoleApplication</key> <array> <dict> <key>UISceneConfigurationName</key> <string>Default Configuration</string> <key>UISceneDelegateClassName</key> <string>$(PRODUCT_MODULE_NAME).SceneDelegate</string> </dict> </array> </dict> </dict> <key>UIBackgroundModes</key> <array> <string>remote-notification</string> </array> <key>UILaunchStoryboardName</key> <string>LaunchScreen</string> <key>UIRequiredDeviceCapabilities</key> <array> <string>armv7</string> </array> <key>UIRequiresFullScreen</key> <true/> <key>UISupportedInterfaceOrientations</key> <array> <string>UIInterfaceOrientationPortrait</string> </array> <key>UISupportedInterfaceOrientations~ipad</key> <array> <string>UIInterfaceOrientationPortrait</string> <string>UIInterfaceOrientationPortraitUpsideDown</string> </array> </dict> </plist>
由于登录屏幕超出了iPad显示屏的范围,我的应用两次被拒绝提交到应用商店。我试图复制该问题,但无法在...
答案
问题在于图像配置。您应该向其添加以下修饰符:
.scaledToFit()
以上是关于SwiftUI-画布超出屏幕宽度-应用被拒绝的主要内容,如果未能解决你的问题,请参考以下文章