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 兼容。
真的,这不可能是真的(?!),因为这是一个新的、闪亮的功能……
也许我忽略了一些东西……
无论如何:这是展示该问题的演示项目。
我想使用Power Nap作为开发人员来下载我的应用程序的数据.自动唤醒功能是一件好事.使用Mac App可以实现这一点吗?
我知道Apple允许的是什么; 它写在各处.
但是,我可以说,更新我的应用程序中的数据(即,不是云中的文档,邮件,提醒等),也许是大数据,比如新地图?
我必须在iOS5/6(iPhone)上实现一个非常自定义的平铺地图图层/视图,它将图块作为图像和/或数据(JSON)从服务器加载.它就像谷歌地图,但在某些非常具体的点,所以我不能轻易使用如下的解决方案:
CATiledLayer
与...结合 UIScrollView
问题是:由于我的特定规格,没有一个解决方案确实对我有所帮助.如果你认为,有一个合适的解决方案,请告诉我!
如果没有:
帮我找到最适合我案例的解决方案!
"但为什么我不能使用这些漂亮的解决方案?"
有一些限制,必须知道:
我们只使用3个缩放级别(0,1和2)
每个瓷砖在下一个缩放级别(=缩放因子3)中有9个子弹(不像大多数其他套件中的4个子弹 = zoomfactor 2)
第一层的初始大小为(以像素为单位/点为一半)768*1024.
第二层宽三倍(zoomfactor 3 !!!) - > 2304*3072
第三层同样宽,高于第二层 - > 6912*9216
来自服务器的每个磁贴都是256x256像素
所以每个子层的数量是瓷砖数量的9倍(第一层为12,第二层为108,第三层为972)
每个磁贴都有一个背景图像(大小约为6KB)(从服务器加载为图像)和前景信息(从服务器加载每个磁贴的JSON - 大小为10-15KB)
- >前景信息JSON包含覆盖图像(例如谷歌中的流量)或要绘制到局部切片坐标空间的局部切片信息(如注释,但每个切片)
我想将整个背景磁贴缓存在磁盘上,因为它们永远不会改变
要么我想在一定时间内缓存每个图块的overlay-tile-images/overlay-tile-information,直到它应该再次重新加载
缩放应该是捏合和双击
我的一些考虑因素:
缓存不是问题.我通过CoreData或类似的方式做到这一点
我想到了一个UIScrollView,以显示平滑的滚动
我想使用捏,所以每次突破下一个缩放级别时,我都必须绘制下一个缩放级别的瓷砖
内容应该只在可见区域绘制(对我来说,在iPhone 5 320x500上)
应删除不可见的切片,以提高内存效率.但是,不应该立即删除它们,只有当一块瓷砖远离可见中心的一定像素/点时才会被删除.应该有一个"显示缓存",即时显示瓷砖,只是加载和显示.或者那里有更好的技术吗?
我可以异步地从磁盘或服务器加载背景,因为我知道哪些图块是可见的.我也是使用tile-JSON.然后我提取瓷砖的JSON信息("覆盖直接图像或信息,如城市名称,我必须将其绘制到瓷砖中")并绘制或加载覆盖(从DB /光盘或服务器)
UIScrollView是否足够高效以处理平铺视图的最大大小
我应该使用CALayer作为子图层来绘制吗?我应该使用Quartz直接在大画布上画画吗?
我正在使用RestKit在各种端点(在iOS平台上)获取JSON数据.
SO上有几个问题指向同一个方向:
但我的问题仍然是另一个问题,因为我知道,如果JSON文件太大,我必须把它切成块.我会去做的!
如何使用RestKit中的CoreData完成导入.
似乎存在父/子上下文设置,在最短的时间内导入大型数据集时效率非常低(可能在启动时一次全部导入 - 无批量/延迟导入!!!).
请参阅此处Florian Kugler关于CoreData(Stacks)中性能导入的帖子
我的问题是:除了已经设置的父/子上下文设置之外,我可以设置不同的上下文,并在其他上下文中RestKit
运行RKManagedObjectRequestOperation
完全异步导入.然后将上下文合并到mainContext以获取...
我真的想与CoreData坚持而没有切换到普通的SQLite,获得最有可能表现出来的组合CoreData
和RestKit
.
我很高兴你的专业答案.也许布莱克也可以直接回答我这个问题.
我正在使用Xcode 4.4.您可能都知道,有一个简单的选项可以在Xcode中本地化资源文件.您也可以将plist文件国际化,这是我的方法.
但是从4.4开始它似乎不再适用了.
您所要做的就是以下内容:
<project>-Info.plist
文件中添加关键字"本地化",其中添加了一个子数组,您可以将国家/地区代码添加为项目Localizable.strings
),如下所示:<country identifier>.lproj
文件夹中.在Xcode 4.4中,您无法选择在plist文件中定义的语言.只能说英语.
我尝试了一切.不想手动本地化.
同样在4.4以下的Xcode版本中,可以使用"+"按钮添加新语言.这是不可能的:看看这个:
有什么建议.或者我是以错误的方式做到的?
ios ×3
catiledlayer ×1
cocoa ×1
core-data ×1
info-plist ×1
ios15 ×1
maps ×1
performance ×1
restkit ×1
swift ×1
uikit ×1
uiscrollview ×1
xcode ×1
xcode4.4 ×1