我有一个使用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永远不会被调用.有没有人如何建立一个干净的视图层次结构的好例子?
我收到警告"这可能是因为流布局子类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) 我正在尝试使用Bootstrap 4创建按钮,如下所示:
图标(字体真棒)应该以文本为中心,并且所有图标在屏幕上具有相同的y位置.按钮的边框应该是不可见的.
我是否必须使用按钮或使用其他元素更好?欢迎任何帮助.
我有一个主详细信息结构,其中主控上有一个列表,还有一个详细信息页面,我想在其中全屏显示网页,因此没有导航栏,也没有状态栏。用户可以通过手势返回(内部应用程序)。
我正在努力隐藏状态栏
.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)
任何想法?
我有一个带有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。
我有自定义 UITableView,我将背景颜色设置为白色。这适用于黑暗和明亮模式。但在黑暗模式下,披露指标很难看到。
我试图用 cell.tint 颜色解决这个问题,但它不起作用。我该如何解决?
黑暗模式:
明亮模式:
我的 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) 我正在使用这段代码来获取有关更改UITextField文本的信息.
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textUpdated) name: UITextFieldTextDidChangeNotification object:self.inputValueField.text];
Run Code Online (Sandbox Code Playgroud)
适用于iOS6,但不会通过iOS7调用.有任何想法吗?
我使用Alamofire,ObjectMapper和Realm并保存我在领域中获取和映射的对象.是否可以自动删除孤立对象?
例如,我获取联系人列表.现在已从响应中删除了一个联系人,应自动从Realm中删除.这是objectmapper可以做的吗?
在Swift 2中,可以过滤这样的范围:
let range: Range<Int> = 1..<100
let mult4 = range
.filter{n in n % 4 == 0}
Run Code Online (Sandbox Code Playgroud)
在Swift3中,范围似乎已经失去了它的过滤方法.有什么建议?
ios ×3
swift ×3
swiftui ×2
alamofire ×1
bootstrap-4 ×1
cocoa-touch ×1
css ×1
filter ×1
html ×1
ios-darkmode ×1
ios7 ×1
objectmapper ×1
realm ×1
swift2 ×1
uikit ×1
uitextfield ×1