小编Ste*_*den的帖子

如何在不依赖通知的情况下获得键盘高度

我知道如何设置NSNotification观察器来检测键盘显示/隐藏的时间.从这里我可以得到键盘的高度.但是如果在键盘仍然显示时旋转设备会发生什么?

有没有办法让键盘处于这种新状态?由于键盘仍然显示新的通知将不会被触发.

ipad ios

15
推荐指数
2
解决办法
1万
查看次数

根据 Apple 开发者文档,SwiftUI tvOS ScrollView 不滚动

这应该是一个简单的任务。按照 Apple 开发人员文档 ( https://developer.apple.com/documentation/swiftui/scrollview )中的示例,显示的数据不会滚动。

struct ContentView: View {

   var body: some View {
       ScrollView {
           VStack(alignment: .leading) {
               ForEach(0..<100) {
                   Text("Row \($0)")
               }
           }
       }
   }
}
Run Code Online (Sandbox Code Playgroud)

我使用的是 Xcode 12.5.1。我在这里缺少什么?

scrollview tvos swiftui

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

SwiftUI 如何将全局变量传递给非 View 类

我了解如何使用 @EnvironmentObject 使全局数据可用于任何视图类,但我找不到将变量传递给非视图类的方法。

我的情况似乎是一个常见问题,是:

  1. 登录,返回访问令牌。后续所有 api 调用都需要使用该 token
  2. 将访问令牌存储在 UserSettings 类中
  3. 将 UserSettings 放入环境存储桶中
    let contentView = ContentView()
        .environmentObject(UserSettings())
Run Code Online (Sandbox Code Playgroud)
  1. 每个视图将根据 api 调用返回的数据显示数据
struct HomeView: View {
    @EnvironmentObject var user: UserSettings  <=== ACCESS TO GLOBAL DATA
    @ObservedObject var categories = Categories()  <=== GET DATA FOR THIS VIEW

    var body: some View {
    ...
}
Run Code Online (Sandbox Code Playgroud)
  1. Categories() 是一个非视图 Swift 类,它将检索数据,但需要存储在 UserSettings 中的访问令牌
class Categories : ObservableObject {
    @Published var allCategories = CategoriesModel()
    @EnvironmentObject var user: UserSettings  <==== CANNOT ACCESS THIS DATA!

    init() { …
Run Code Online (Sandbox Code Playgroud)

swiftui observedobject environmentobject

4
推荐指数
1
解决办法
1689
查看次数

自定义NavigationBar按钮在iOS 7中看起来不同

使用iOS 7 SDK构建我的应用程序会更改导航栏及其按钮的外观:

导航栏比较

顶部图像显示在使用iOS 6的设备上运行时的外观,底部图像显示使用iOS 7在设备上运行的相同应用程序.

导航栏使用背景图像创建:

UIImage *navigationBarBackgroundImage = [[UIImage imageNamed:@"MyTopNavigationBackground"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 4, 0)];

UINavigationBar *bar = [UINavigationBar appearanceWhenContainedIn:[MyNavigationController class], nil];
[bar setBackgroundImage:navigationBarBackgroundImage forBarMetrics:UIBarMetricsDefault];
[bar setTintColor:[UIColor colorWithRed:0.17 green:0.62 blue:0.23 alpha:1.0]];
Run Code Online (Sandbox Code Playgroud)

左侧栏按钮由以下内容创建:

- (UIBarButtonItem *)slideoverMenuBarButtonItem {
    return [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"bar_button_icon_menu.png"]
                                        style:UIBarButtonItemStylePlain
                                       target:self
                                       action:@selector(slideoverMenu)];
}
Run Code Online (Sandbox Code Playgroud)

我更关心按钮外观发生了什么.处理这种向新iOS 7外观过渡的"最佳实践"是什么?

iphone user-interface objective-c ipad ios

3
推荐指数
1
解决办法
3107
查看次数