小编net*_*000的帖子

内存未在ios视图层次结构中发布

我有一个使用ARC的iOS应用程序.我不使用InterfaceBuilder,所有UI都是手动生成的.在那个应用程序中,我有几个带有SubViewControllers的UIViewControllers.那些ViewControllers是从一个菜单(-ViewController)绑定在一起的,它将它们推送到堆栈上.

我的问题是,在ViewControllers之间切换时,内存不会被释放.

像这样保持对SubViewControllers的引用是错误的吗?

@property (nonatomic, strong) UIViewController subViewController1; 
@property (nonatomic, strong) UIViewController subViewController2;
Run Code Online (Sandbox Code Playgroud)

viewDidUnload永远不会被调用.有没有人如何建立一个干净的视图层次结构的好例子?

cocoa-touch uiviewcontroller ios automatic-ref-counting

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

XCode 7:复制Layoutattributes

我收到警告"这可能是因为流布局子类MyApp.MenuFlowLayout正在修改UICollectionViewFlowLayout返回的属性而不复制它们".我如何在Swift中复制它?

override func layoutAttributesForElementsInRect(rect: CGRect) -> [UICollectionViewLayoutAttributes]? {

    if let array = super.layoutAttributesForElementsInRect(rect) as [UICollectionViewLayoutAttributes]? {

        var visibleRect = CGRectZero
        visibleRect.origin = (self.collectionView?.contentOffset)!
        visibleRect.size = (self.collectionView?.bounds.size)!


        let activeDisatance : CGFloat = visibleRect.size.width / 2
        let zoomFactor : CGFloat = 0.15

        for attributes in array{
            if CGRectIntersectsRect(attributes.frame, visibleRect){
                let distance  = CGRectGetMidX(visibleRect) - attributes.center.x
                let normalizedDistance = distance / activeDisatance
                if abs(distance) < activeDisatance{
                    let zoom = 1 + zoomFactor * (1 - abs(normalizedDistance))
                    attributes.transform3D = CATransform3DMakeScale(zoom, zoom, 1.0)
                    attributes.zIndex = …
Run Code Online (Sandbox Code Playgroud)

uicollectionviewlayout swift2

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

bootstrap 4:带图标和文字的按钮

我正在尝试使用Bootstrap 4创建按钮,如下所示:

在此输入图像描述

图标(字体真棒)应该以文本为中心,并且所有图标在屏幕上具有相同的y位置.按钮的边框应该是不可见的.

我是否必须使用按钮或使用其他元素更好?欢迎任何帮助.

html css twitter-bootstrap bootstrap-4

4
推荐指数
2
解决办法
5万
查看次数

SwiftUI:隐藏 NavigationLink 目标上的状态栏

我有一个主详细信息结构,其中主控上有一个列表,还有一个详细信息页面,我想在其中全屏显示网页,因此没有导航栏,也没有状态栏。用户可以通过手势返回(内部应用程序)。

我正在努力隐藏状态栏

.statusBar(hidden: true)
Run Code Online (Sandbox Code Playgroud)

这适用于主页,但不适用于详细信息页面。

隐藏导航栏与我的 ViewModifier 配合得很好

public struct NavigationAndStatusBarHider: ViewModifier {
    @State var isHidden: Bool = false

    public func body(content: Content) -> some View {
        content
            .navigationBarTitle("")
            .navigationBarHidden(isHidden)
            .statusBar(hidden: isHidden)
            .onAppear {self.isHidden = true}
    }
}

extension View {
    public func hideNavigationAndStatusBar() -> some View {
        modifier(NavigationAndStatusBarHider())
    }
}
Run Code Online (Sandbox Code Playgroud)

任何想法?

swiftui

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

NotificationCenter时,NotificationCenter:BAD_ACCESS

我有一个带有3个视图控制器的应用程序,这些应用程序被推到导航控制器堆栈上。

(A) -> (B) -> (C)

(A)viewWillAppear以下位置注册通知:

NotificationCenter.default.addObserver(self, selector: #selector(reload), name: NSNotification.Name(rawValue: "DATA_CHANGED"), object: nil)
Run Code Online (Sandbox Code Playgroud)

(A)在viewWillDisappear以下位置注销:

NotificationCenter.default.removeObserver(self, name: NSNotification.Name(rawValue: "DATA_CHANGED"), object: nil)
Run Code Online (Sandbox Code Playgroud)

另外(A)注销,deinit()但是从不调用。

现在(B)被压入堆栈,并为相同的事件注册/注销(A)

现在(C)被压入堆栈,触发计算并弹回(B)。稍后(B)出现时,计算完成,并触发通知:

NotificationCenter.default.post(name: NSNotification.Name(rawValue: "DATA_CHANGED"), object: nil)
Run Code Online (Sandbox Code Playgroud)

但这导致

线程1:EXC_BAD_ACCESS

我确定通知是问题所在,因为我拼错了通知名称,然后没有发生崩溃。并且(A)(B)仍然没有被释放,因为它们位于堆栈中。我在Profiler中找不到任何僵尸。

知道可能是什么问题吗?

我正在使用XCode 9beta6和Swift 4。

exc-bad-access nsnotificationcenter ios swift

3
推荐指数
1
解决办法
519
查看次数

iOS13 暗模式泄露指示器:不可读

我有自定义 UITableView,我将背景颜色设置为白色。这适用于黑暗和明亮模式。但在黑暗模式下,披露指标很难看到。

我试图用 cell.tint 颜色解决这个问题,但它不起作用。我该如何解决?

黑暗模式:

在此处输入图片说明

明亮模式:

在此处输入图片说明

uikit ios ios-darkmode

3
推荐指数
1
解决办法
540
查看次数

SwiftUI:WKWebView 未加载

我的 SwiftUI 应用程序中有一个 WKWebView 作为 UIViewRepresentable ,它最初可以工作。网页已加载,我可以导航到其他页面。如果我强制网络视图加载另一个页面,则什么也不会发生。它适用于 Xcode 11.3,但自 11.4 以来似乎已损坏。这是一个例子。重新加载强制随机加载页面 1 或 2。有什么建议可能是什么问题吗?

import WebKit
import SwiftUI

struct WebView: UIViewRepresentable{

    var url: URL

    let urls = [URL(string: "https://google.com/")!, URL(string: "https://bing.com")!]

    private let webview = WKWebView()

    fileprivate func loadRequest() {

        let index = Int(Date().timeIntervalSince1970) % 2
        print(index)

        let request = URLRequest(url: urls[index])
        webview.load(request)
    }

    func makeUIView(context: UIViewRepresentableContext<WebView>) -> WKWebView {

        loadRequest()

        return webview
    }

    func updateUIView(_ uiView: WKWebView, context: UIViewRepresentableContext<WebView>) {}

    func reload(){
        loadRequest()
    }

}
Run Code Online (Sandbox Code Playgroud)

WebView 是这样使用的(简化示例):

 var body: …
Run Code Online (Sandbox Code Playgroud)

swiftui

3
推荐指数
1
解决办法
5801
查看次数

UITextFieldTextDidChangeNotification iOS7未被触发

我正在使用这段代码来获取有关更改UITextField文本的信息.

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textUpdated) name: UITextFieldTextDidChangeNotification object:self.inputValueField.text];
Run Code Online (Sandbox Code Playgroud)

适用于iOS6,但不会通过iOS7调用.有任何想法吗?

uitextfield ios7

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

Alamofire,ObjectMapper,Realm:删除孤立对象

我使用Alamofire,ObjectMapper和Realm并保存我在领域中获取和映射的对象.是否可以自动删除孤立对象?

例如,我获取联系人列表.现在已从响应中删除了一个联系人,应自动从Realm中删除.这是objectmapper可以做的吗?

realm swift alamofire objectmapper

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

Swift 3:过滤范围

在Swift 2中,可以过滤这样的范围:

let range: Range<Int> = 1..<100
let mult4 = range
    .filter{n in n % 4 == 0}
Run Code Online (Sandbox Code Playgroud)

在Swift3中,范围似乎已经失去了它的过滤方法.有什么建议?

functional-programming filter swift

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