小编Fab*_*b1n的帖子

如何使用导航视图解决损坏的 UIKeyboardLayoutGuide?

iOS 15 添加了新功能,UIKeyboardLayoutGuide能够对需要与键盘做出反应的视图施加约束。

这在单个视图中效果很好,但是当您在视图 A中设置约束并将视图 B推入堆栈时,键盘布局指南突然变为CGRect.zero(在视图 A中)的大小。

当返回到视图A时,键盘布局引导框架是静止的,因此键盘布局引导顶部“SomeView”.bottom.zero之间的约束例如被打破。

为了展示这个问题,我向跟踪控制器添加了一个绿色视图,并向键盘布局指南顶部锚点添加了底部约束,如下所示:

let kbView = UIView()
kbView.backgroundColor = .green
kbView.translatesAutoresizingMaskIntoConstraints = false

self.view.addSubview(kbView)

kbView.widthAnchor.constraint(equalToConstant: 200).isActive = true
kbView.heightAnchor.constraint(equalToConstant: 100).isActive = true
kbView.centerXAnchor.constraint(equalTo: self.view.centerXAnchor).isActive = true

kbView.bottomAnchor.constraint(equalTo: self.view.keyboardLayoutGuide.topAnchor).isActive = true
Run Code Online (Sandbox Code Playgroud)

您可以在 Github 上的以下链接中找到整个项目。

我们如何解决这个问题?其他人也遇到过这个问题吗?
我当前的解决方法是编写自己的布局指南,该指南可以正常工作,并且与 iOS < 15 兼容。

真的,这不可能是真的(?!),因为这是一个新的、闪亮的功能……
也许我忽略了一些东西……

无论如何:这是展示该问题的演示项目

uikit ios swift ios15

7
推荐指数
1
解决办法
1071
查看次数

允许应用在Power Nap期间下载数据

我想使用Power Nap作为开发人员来下载我的应用程序的数据.自动唤醒功能是一件好事.使用Mac App可以实现这一点吗?

我知道Apple允许的是什么; 它写在各处.

但是,我可以说,更新我的应用程序中的数据(即,不是云中的文档,邮件,提醒等),也许是大数据,比如新地图?

cocoa osx-mountain-lion

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

高效的自定义平铺地图,具有自定义缩放级别和缩放系数

我必须在iOS5/6(iPhone)上实现一个非常自定义的平铺地图图层/视图,它将图块作为图像和/或数据(JSON)从服务器加载.它就像谷歌地图,但在某些非常具体的点,所以我不能轻易使用如下的解决方案:

  1. 谷歌地图
  2. route-me(由MapBox使用)
  3. CATiledLayer 与...结合 UIScrollView

问题是:由于我的特定规格,没有一个解决方案确实对我有所帮助.如果你认为,有一个合适的解决方案,请告诉我!

如果没有:
帮我找到最适合我案例的解决方案!

"但为什么我不能使用这些漂亮的解决方案?"
有一些限制,必须知道:

  1. 我们只使用3个缩放级别(0,1和2)

  2. 每个瓷砖在下一个缩放级别(=缩放因子3)中有9个子弹(不像大多数其他套件中的4个子弹 = zoomfactor 2)

  3. 第一层的初始大小为(以像素为单位/点为一半)768*1024.
    第二层宽三倍(zoomfactor 3 !!!) - > 2304*3072
    第三层同样宽,高于第二层 - > 6912*9216

  4. 来自服务器的每个磁贴都是256x256像素

  5. 所以每个子层的数量是瓷砖数量的9倍(第一层为12,第二层为108,第三层为972)

  6. 每个磁贴都有一个背景图像(大小约为6KB)(从服务器加载为图像)和前景信息(从服务器加载每个磁贴的JSON - 大小为10-15KB)
    - >前景信息JSON包含覆盖图像(例如谷歌中的流量)或要绘制到局部切片坐标空间的局部切片信息(如注释,但每个切片)

  7. 我想将整个背景磁贴缓存在磁盘上,因为它们永远不会改变

  8. 要么我想在一定时间内缓存每个图块的overlay-tile-images/overlay-tile-information,直到它应该再次重新加载

  9. 缩放应该是捏合和双击

我的一些考虑因素:

  1. 缓存不是问题.我通过CoreData或类似的方式做到这一点

  2. 我想到了一个UIScrollView,以显示平滑的滚动

  3. 我想使用捏,所以每次突破下一个缩放级别时,我都必须绘制下一个缩放级别的瓷砖

  4. 内容应该只在可见区域绘制(对我来说,在iPhone 5 320x500上)

  5. 应删除不可见的切片,以提高内存效率.但是,不应该立即删除它们,只有当一块瓷砖远离可见中心的一定像素/点时才会被删除.应该有一个"显示缓存",即时显示瓷砖,只是加载和显示.或者那里有更好的技术吗?

  6. 我可以异步地从磁盘或服务器加载背景,因为我知道哪些图块是可见的.我也是使用tile-JSON.然后我提取瓷砖的JSON信息("覆盖直接图像或信息,如城市名称,我必须将其绘制到瓷砖中")并绘制或加载覆盖(从DB /光盘或服务器)

  7. UIScrollView是否足够高效以处理平铺视图的最大大小

  8. 我应该使用CALayer作为子图层来绘制吗?我应该使用Quartz直接在大画布上画画吗?

现在轮到你了 !!!

maps uiscrollview catiledlayer ios

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

导入非常大的数据集时CoreData和RestKit性能

我正在使用RestKit在各种端点(在iOS平台上)获取JSON数据.

SO上有几个问题指向同一个方向:

使用CoreData在iPhone上导入大型数据集

但我的问题仍然是另一个问题,因为我知道,如果JSON文件太大,我必须把它切成块.我会去做的!

如何使用RestKit中的CoreData完成导入.
似乎存在父/子上下文设置,在最短的时间内导入大型数据集效率非常(可能在启动时一次全部导入 - 无批量/延迟导入!!!).

请参阅此处Florian Kugler关于CoreData(Stacks)中性能导入的帖子

我的问题是:除了已经设置的父/子上下文设置之外,我可以设置不同的上下文,并在其他上下文中RestKit运行RKManagedObjectRequestOperation完全异步导入.然后将上下文合并到mainContext以获取...

我真的想与CoreData坚持而没有切换到普通的SQLite,获得最有可能表现出来的组合CoreDataRestKit.

我很高兴你的专业答案.也许布莱克也可以直接回答我这个问题.

performance core-data ios restkit

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

xcode无法识别Info.plist中的本地化

我正在使用Xcode 4.4.您可能都知道,有一个简单的选项可以在Xcode中本地化资源文件.您也可以将plist文件国际化,这是我的方法.

但是从4.4开始它似乎不再适用了.

您所要做的就是以下内容:

  1. <project>-Info.plist文件中添加关键字"本地化",其中添加了一个子数组,您可以将国家/地区代码添加为项目
  2. 现在您可以本地化您的资源文件(如Localizable.strings),如下所示:使资源可本地化 然后是模态屏幕,您可以在其中选择plist文件中定义的语言 选择可本地化的语言
  3. 输入!资源文件现在位于<country identifier>.lproj文件夹中.

在Xcode 4.4中,您无法选择在plist文件中定义的语言.只能说英语.
我尝试了一切.不想手动本地化.

同样在4.4以下的Xcode版本中,可以使用"+"按钮添加新语言.这是不可能的:看看这个:
本地化

有什么建议.或者我是以错误的方式做到的?

xcode localizable.strings info-plist xcode4.4

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