【iOS

1.float和double的精度问题。

在开发中我遇到一个问题就是四位或者五位小数的字符串转换成float后相加,在转换成字符串,数值不正确。我开始以为是后台返回数据的问题,打印出来发现不是。只能想到是精度的问题。这时候我就转换成double类型,发现结果就不会出错了。

2.iOS自建证书不被苹果认可,webview加载报错。

在测试中发现一个问题,一个链接https在wkwebview中打不开。在浏览器中能打开,后来发现是webview的代理中报错。显示Error Domain=NSURLErrorDomain Code=-1202,Https服务器证书无效,

NSURLErrorDomain Code=-1202 "The certificate for this server is invalid. You might be connecting to a server that is pretending to be “https:jkjlkjlkjljlj” which could put your confidential information at risk."

错误信息的大致翻译就是

错误:“此服务器的证书无效。您可能正在连接到一个伪装成“www.xxxxxx.com”的服务器, 这会威胁到您的机密信息的安全

网上一查发现也有很多这样的问题,但是大多都是直接从网络层开始的。直接设置各种代理。

参考链接如下:
//这两个直接调用私有API,不推荐,会造成审核被拒
链接一:https://www.jianshu.com/p/d97b1786216f
链接二:https://www.cocoanetics.com/2009/11/ignoring-certificate-errors-on-nsurlrequest/

下面几个我未试验(一是因为有的时间很早好几年了,二是因为大多是直接设置网络层,而我的情况只是这个webiview加载不出来,不需要通篇设置)
链接三:https://www.jianshu.com/p/3105e0843c6b
链接四:http://www.qingpingshan.com/rjbc/ios/181533.html
链接五:https://blog.csdn.net/qq_32531823/article/details/50730745

上面也说了,我只是webview加载不出来,网络请求不报错。解决方法如下:

// 在webview的代理中设置一下
// oc
- (void)webView:(WKWebView *)webView didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential * _Nullable credential))completionHandler{
    
    if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]) {
        
        NSURLCredential *card = [[NSURLCredential alloc]initWithTrust:challenge.protectionSpace.serverTrust];
        
        completionHandler(NSURLSessionAuthChallengeUseCredential,card);
        
    }
}
// swift
func webView(_ webView: WKWebView, didReceive challenge: URLAuthenticationChallenge, completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void) {
        if challenge.protectionSpace.authenticationMethod == NSURLAuthenticationMethodServerTrust {
            let card = URLCredential.init(trust: challenge.protectionSpace.serverTrust!)
            completionHandler(URLSession.AuthChallengeDisposition.useCredential,card)
        }
}

3.tableviewcell上的按钮能显示,但是点击无效果,而代理方法去有效果

这时候就要看看图层,看看按钮的位置对不对

我就是这样,先看了看没有遮盖,感觉正确,然后就像网上说的把加在cell上的视图加在cell的contenview上 还是不行

后来看了看图层 把这个按钮加在backview上,但是这个按钮的位置超出了backview。

而我的cell设置偏大 虽然是显示出了按钮 但是按钮却不在backview上 所以不能点击

这时候就改下backview或者把按钮加在cell上就可以了

4.tabbar设置图片问题

在不设置图片的imageedge的情况下有时候会出现图片大小有偏差的情况。有时候也会出现点击图片后视觉感觉图片发生偏差的情况,还有可能在使用第三方和系统tabbar混用是出现大小不一致的情况

这时候很大的可能是图片的问题。

我的解决方法 设置2倍48*48 3倍72*72 这时候设置就差不多了

具体原因未知

5.self.title和self.navigationItem.title

今天遇到一个很傻的问题。我设置self.title后发现导航栏和tabbar都会改变。然后我就开始纳闷。

仔细一想才发现self.title是都会改变的。而self.navigationItem.title只会改变导航栏。self.navigationController.title 设置无效

6.最近在用swift写demo。把它延时处理的方法写出

// 第一种
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 1.5) {
     self.categoryCollectionView.endRefreshing(isSuccess: true)
}

// 第二种
perform(#selector(endRefreshing), with: self, afterDelay: 1.5)

@objc func endRefreshing() {
     self.rankCollectionView.endLoadMore(isNoMoreData: false)
}
原文地址:https://www.cnblogs.com/weicyNo-1/p/10202386.html