小编Ant*_*gin的帖子

使用嵌套滚动视图时,滚动会"卡住"

问题描述:

我有一个用于浏览嵌套图像的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它在底部显示:

iPhone 6

另外,奇怪的是,我能够重现这个问题iOS 7.0 - 10.1,但一切都正常,iOS 10.2并且更大.

题:

那么,我做错了什么?我的修复可以改进吗?

测试项目:

我创建了简单的测试项目来说明所描述的问题 - NestedScrollingProblems.请注意我的ImageScrollView版本与Apple的版本稍有不同,因为我应用了另一个缩放规则.此外,默认情况下,解决方法已被注释掉.(项目代码有点乱,抱歉)

scroll objective-c uiscrollview ios

8
推荐指数
1
解决办法
592
查看次数

如何从Java调用Kotlin标准库函数?

动机:

在我们的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 扩展函数。我的扩展是完全可见的,但由于空接收器而崩溃。正如我在下面提到的,问题更多是关于访问本机库代码,而不是我自己的扩展。

有什么帮助吗?

java android kotlin

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

如何打开 .swiftmodule 文件

我想.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文件的任何其他想法?

xcode ios swift

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

标签 统计

ios ×2

android ×1

java ×1

kotlin ×1

objective-c ×1

scroll ×1

swift ×1

uiscrollview ×1

xcode ×1