gpt4 book ai didi

ios - UIView组件已加载但未显示

转载 作者:行者123 更新时间:2023-11-30 12:26:15 26 4
gpt4 key购买 nike

我有一个 ViewController,它不显示其所有组件。我使用一个performSegue来实现这个VC。这些组件是一个UILabel和一到两个UIButton,这取决于时代。

当我使用调试 View 层次结构时,我看到组件已加载,因此,例如,如果我旋转屏幕,某些组件会出现,UIButton 不会显示,如果我触摸,则会正确响应“触摸”在它应该是元素的地方(并使其以相同的方式出现)

如果我将此 VC 放入“ Root View Controller ”中,仅从 Segue 中,我也没有问题。

您对问题的原因有什么想法吗?

编辑我

我忘了说,将应用程序移动到后台并返回到它也可以使组件出现。

在 viewDidLoad 和 viewDidAppear 函数下方

class CameraView: UIViewController {
@IBOutlet weak var titleUI: UILabel!
@IBOutlet weak var cancelUI: UIButton!
@IBOutlet weak var flipUI: UIButton!
@IBOutlet weak var captureUI: UIButton!
@IBOutlet weak var previewUI: UIView!
@IBOutlet weak var flashUI: UIButton!
@IBOutlet weak var touchUI: UIView!
@IBOutlet weak var retryUI: UIButton!
@IBOutlet weak var validateUI: UIButton!
@IBOutlet weak var resultUI: UIImageView!

var callBack: (Int, UIImage?) -> Void = {
(status: Int, image: UIImage?) -> Void in
}
private var cameraHandler = CameraManager()
private var flash: CameraFlashMode = .off

override func viewDidLoad() {
cancelUI.setIcon(icon: .googleMaterialDesign(.reply), iconSize: 45, color: .white, forState: .normal)
flipUI.setIcon(icon: .googleMaterialDesign(.switchCamera), iconSize: 45, color: .white, forState: .normal)
captureUI.setIcon(icon: .googleMaterialDesign(.cameraAlt), iconSize: 45, color: .white, forState: .normal)
flashUI.setIcon(icon: .googleMaterialDesign(.flashOff), iconSize: 45, color: .white, forState: .normal)
retryUI.setIcon(prefixText: "", prefixTextColor: .white, icon: .googleMaterialDesign(.chevronLeft), iconColor: .white, postfixText: "Retry", postfixTextColor: .white, forState: .normal, textSize: 15, iconSize: 20)
validateUI.setIcon(prefixText: "", prefixTextColor: .white, icon: .googleMaterialDesign(.done), iconColor: .white, postfixText: "Save", postfixTextColor: .white, forState: .normal, textSize: 15, iconSize: 20)

resultUI.clipsToBounds = true
resultUI.contentMode = .scaleAspectFit

cancelUI.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(self.cancel)))
captureUI.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(self.capture)))
flashUI.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(self.switchFlashMode)))
flipUI.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(self.turnCamera)))
validateUI.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(self.validate)))
retryUI.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(self.retry)))

cameraHandler.cameraDevice = .back
cameraHandler.showAccessPermissionPopupAutomatically = false
cameraHandler.flashMode = flash
cameraHandler.animateCameraDeviceChange = true
cameraHandler.cameraOutputMode = .stillImage
cameraHandler.cameraOutputQuality = .high
cameraHandler.writeFilesToPhoneLibrary = false
}

override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
cameraHandler.askUserForCameraPermission{result in
if !result {
self.callBack(PERMISSION_REFUSED, nil)
self.close(reason: PERMISSION_REFUSED)
}
}
self.view.setNeedsDisplay()
retry()
}
...
}

编辑二

我正要添加屏幕截图来显示差异,我意识到在屏幕截图上显示了所有项目,尽管设备上显然不是这样

最佳答案

问题出在您使用的库上。

向屏幕添加按钮和标签的方式几乎相同,您设置添加内容(文本、图像)的框架,向其父 View 添加 subview (无论是在 IB 中还是通过代码),如果您之后不要更改任何内容,屏幕上肯定有一个按钮或标签。

正如您提到的标签设置正确,这意味着这不是一些导致按钮不显示的奇怪错误,这只是您设置它的方式,即使用 setIcon 函数。我相信您在使用这个库时做错了一些步骤,因为我不了解这个库,我不能告诉您到底是什么,但问题就在这里。

有一种替代方法可以实现您想要的相同目标而不会出现错误,请转到 https://material.io/icons/下载你想要的图像,并使用UIKit方法setImage设置按钮的图像,你应该就可以了。

关于ios - UIView组件已加载但未显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44176443/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com