我有一个用于浏览嵌套图像的iOS项目,UIScrollViews其灵感来自着名的Apple的PhotoScroller.问题是当图像被宽度或高度缩放时,有时滚动只是"卡住".这是一个如何查看iPhone 4s尺寸935x1400缩放的图像的示例:
(我开始向左拖动,但滚动视图立即丢弃此动作,图像"卡住")
通过在缩放后将内部滚动视图的内容大小调整为最接近的整数,我找到了一种解决方法:
// Inside ImageScrollView.m
- (void)setZoomScale:(CGFloat)zoomScale
{
[super setZoomScale:zoomScale];
[self fixContentSizeForScrollingIfNecessary];
}
- (void)zoomToRect:(CGRect)rect animated:(BOOL)animated
{
[super zoomToRect:rect animated:animated];
[self fixContentSizeForScrollingIfNecessary];
}
- (void)fixContentSizeForScrollingIfNecessary
{
if (SYSTEM_VERSION_LESS_THAN(@"10.2"))
{
CGSize content = self.contentSize;
content.width = rint(content.width);
content.height = rint(content.height);
self.contentSize = content;
}
}
Run Code Online (Sandbox Code Playgroud)
但这个修复并不完美 - 现在一些图像显示在侧面有一个像素宽的条纹.例如,iPhone 6对于大小的图像,690x14300它在底部显示:
另外,奇怪的是,我能够重现这个问题iOS 7.0 - 10.1,但一切都正常,iOS 10.2并且更大.
那么,我做错了什么?我的修复可以改进吗?
我创建了简单的测试项目来说明所描述的问题 - NestedScrollingProblems.请注意我的ImageScrollView版本与Apple的版本稍有不同,因为我应用了另一个缩放规则.此外,默认情况下,解决方法已被注释掉.(项目代码有点乱,抱歉)
动机:
在我们的Android项目中,我们有很多类似的验证str != null && !str.isEmpty(),所以我决定将它们重构为辅助方法。我暂时使用以下类作为助手:
public class StringUtil {
public static boolean isNullOrEmpty(@Nullable String str) {
return str == null || str.isEmpty();
}
}
Run Code Online (Sandbox Code Playgroud)
问题:
我们已经有了一个用 Kotlin 编写的字符串辅助类(例如 String.kt)。因此,是否有两个助手(一个在 Java 中,一个在 Kotlin 中)并不清楚。
我尝试过的:
在 String.kt 中复制粘贴的天真方法isNullOrEmpty()没有成功,因为它$reciever是 null,所以它崩溃了。
其次,我尝试使用isNullOrEmpty()kotlin.text 中的 Kotlin 原生(https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/is-null-or-empty.html):
public inline fun CharSequence?.isNullOrEmpty(): Boolean
Run Code Online (Sandbox Code Playgroud)
但我不知道如何从 Java 调用它。此页面(https://kotlinlang.org/docs/reference/java-to-kotlin-interop.html)不提供任何建议。
问题不在于从 Java 访问 Kotlin 扩展函数。我的扩展是完全可见的,但由于空接收器而崩溃。正如我在下面提到的,问题更多是关于访问本机库代码,而不是我自己的扩展。
有什么帮助吗?
我想.swiftmodule从 iOS 框架检查文件的公共内容。
在这里(https://lists.swift.org/pipermail/swift-users/Week-of-Mon-20160111/000827.html)我找到了一个使用建议swift-ide-test:
您可以使用 swift-ide-test 工具来转储模块的公共接口,但命令行界面没有它应有的漂亮:
swift-ide-test -print-module -source-filename=dummy.swift -module-to-print=MyApp
...加上查找模块及其所有依赖项所需的任何 -I 或 -F 路径。如果您使用的是 Mac,则需要在开头插入“xcrun -sdk macosx”或“xcrun -sdk iphoneos”以查找系统标头。
不幸的是,当我尝试xcrun -sdk iphoneos swift-ide-test使用 Xcode 10.1运行时,出现以下错误:
$ xcrun -sdk iphoneos swift-ide-test
xcrun: error: unable to find utility "swift-ide-test", not a developer tool or in PATH
Run Code Online (Sandbox Code Playgroud)
似乎此工具已从 Xcode 中删除。
关于如何打开.swiftmodule文件的任何其他想法?
ios ×2
android ×1
java ×1
kotlin ×1
objective-c ×1
scroll ×1
swift ×1
uiscrollview ×1
xcode ×1