相关疑难解决方法(0)

覆盖Swift扩展中的方法

我倾向于只将必需品(存储属性,初始化器)放入我的类定义中,并将其他所有内容移动到自己的extension类中,有点像extension我将与之合并的每个逻辑块// MARK:.

例如,对于UIView子类,我最终会得到与布局相关的东西的扩展,一个用于订阅和处理事件等等.在这些扩展中,我不可避免地必须覆盖一些UIKit方法,例如layoutSubviews.我从未注意到这种方法有任何问题 - 直到今天.

以此类层次结构为例:

public class C: NSObject {
    public func method() { print("C") }
}

public class B: C {
}
extension B {
    override public func method() { print("B") }
}

public class A: B {
}
extension A {
    override public func method() { print("A") }
}

(A() as A).method()
(A() as B).method()
(A() as C).method()
Run Code Online (Sandbox Code Playgroud)

输出是A B C.这对我来说没什么意义.我读到有关静态分派的协议扩展,但这不是协议.这是一个常规类,我希望在运行时动态调度方法调用.显然,呼叫C至少应该动态调度和产生C

如果我删除继承NSObject …

swift swift-extensions swift2

119
推荐指数
4
解决办法
6万
查看次数

Cordova应用程序无法在iPhone X(模拟器)上正确显示

我昨天在Xcode 9.0(9A235)的iPhone X模拟器上测试了我的基于Cordova的应用程序,它看起来不太好.首先,不是填满整个屏幕区域,而是在app内容的上方和下方有一个黑色区域.更糟糕的是,应用内容和黑色之间是两个白条.

cordova-plugin-wkwebview-engine使用WKWebView(不是UIWebView)添加所以Cordova渲染可以修复白条.我的应用程序没有从UIWebView迁移到WKWebView,因为在使用cordova-plugin-wkwebview-engine从Inapp购买托管内容下载的图像到HTML5画布时出现性能和内存泄漏问题(file://由于WKWebView中的安全限制,Webview无法直接访问)必须通过加载图像数据cordova-plugin-file.

这些屏幕截图显示了一个在<body> 上设置了蓝色背景的测试应用.在UIWebView的上方和下方,您可以看到白条,但不能看到WKWebView:

与充满整个屏幕区域的原生应用相比,Cordova Webviews都展示了黑色区域:

ios cordova phonegap iphone-x

113
推荐指数
4
解决办法
8万
查看次数

iPhone X上的WKWebView页面高度问题

我发现如果我使用WKWebView

viewport-fit=cover
Run Code Online (Sandbox Code Playgroud)

body :{height:100%}
Run Code Online (Sandbox Code Playgroud)

html主体的高度仍然无法到达iPhone X的底部并且等于safeArea的高度,但是背景颜色可以覆盖全屏.

https://ue.qzone.qq.com/touch/proj-qzone-app/test.html

我在全屏WKWebView中加载此页面以重现问题.

css ios wkwebview ios11 iphone-x

9
推荐指数
3
解决办法
6015
查看次数

WKWebView底部约束设置,但不起作用

我已将WKWebView底部约束设置为超级视图,但直到超级视图才显示内容,直到安全区域才显示内容。

这是显示底部未正确填充的问题图像。

在此处输入图片说明

这是视图和约束图像的层次结构

在此处输入图片说明

在此处输入图片说明

以及使用容器视图设置WebView约束的代码

    let wv = WKWebView(frame: containerView.frame, configuration: wvConfig)
    webView = wv
    containerView.addSubview(wv)

    // setup constraints
    wv.translatesAutoresizingMaskIntoConstraints = false
    if #available(iOS 11.0, *) {
        wv.trailingAnchor.constraint(equalTo: containerView.trailingAnchor).isActive = true
        wv.leadingAnchor.constraint(equalTo: containerView.leadingAnchor).isActive = true
        wv.topAnchor.constraint(equalTo: containerView.topAnchor).isActive = true
        wv.bottomAnchor.constraint(equalTo: containerView.bottomAnchor).isActive = true
    } else {
        NSLayoutConstraint(item: wv, attribute: .top, relatedBy: .equal, toItem: containerView, attribute: .top, multiplier: 1.0, constant: 0).isActive = true
        NSLayoutConstraint(item: wv, attribute: .leading, relatedBy: .equal, toItem: containerView, attribute: .leading, multiplier: 1.0, constant: 0).isActive = true
        NSLayoutConstraint(item: …
Run Code Online (Sandbox Code Playgroud)

ios swift wkwebview

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

iOS:使 WebView 全屏(隐藏主页按钮后面的白色背景)

iOS 开发新手。

内容视图.swift:

struct ContentView: View {
    var body: some View {
         WebView(url: "https://www.stackoverflow.com")
    }
}
Run Code Online (Sandbox Code Playgroud)

WebView.swift:

struct WebView: UIViewRepresentable {
    
    var url: String
    
    func makeUIView(context: Context) -> WKWebView {
        guard let url = URL(string: self.url) else {
            return WKWebView();
        }
              
        let request = URLRequest(url: url)
        let wkWebView = WKWebView()
        wkWebView.load(request)
        wkWebView.allowsBackForwardNavigationGestures = true
        return wkWebView
    }
    
    func updateUIView(_ uiView: WKWebView, context: UIViewRepresentableContext<WebView>) {
      
    }
}
Run Code Online (Sandbox Code Playgroud)

结果在主页按钮指示器后面出现一个白条:

白条

如何使 webview 全屏显示,以便主页按钮后面不再有白条?

xcode webview ios home-button wkwebview

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