我有一个ViewController不显示其所有组件。 我使用performSegue来实现这个VC。 这些组件是一个UILabel和一到两个UIButton,它取决于时间。已加载但未显示UIView组件
当我使用调试视图层次结构时,我看到组件被加载,所以,例如,如果我旋转屏幕,出现一些UIButton不显示,如果我对“触摸”做出正确响应触摸它应该是元素的地方(并使其以相同的方式出现)
我也没有问题,如果我把这个VC放在“根视图控制器”,只能从塞格。
你对这个问题的原因有什么想法吗?
编辑我
我忘了说,移动在后台的应用程序并返回到它也能够使显示的组件。
下面的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()
}
...
}
编辑II
我正要添加截图显示的差异,我意识到,在截图,显示了所有项目,虽然这显然不是设备上的情况
考虑到如果你旋转屏幕,你可以看到这些UI元素,你的Autolayout可能没有正确设置。在其他屏幕尺寸的设备上会发生什么? –
请添加一些屏幕截图或代码。 –
添加完成的工作。 –