我有一個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可能沒有正確設置。在其他屏幕尺寸的設備上會發生什麼? –
請添加一些屏幕截圖或代碼。 –
添加完成的工作。 –