我創建了一個UIViewController,其中包含一些RosyWriter的功能,我正在重新創建一個錄像機。屏幕包含一個標題,一個包含AVCaptureVideoPreviewLayer的剪輯到邊界的子視圖(因此視頻內容的子層CALayer被添加到該子視圖中,所以我認爲它是非常深的嵌套),兩個按鈕的作用類似於切換按鈕 - 以放置在UIViewController的Storyboard中的Start和Stop按鈕的形式。UIView子視圖可視化更新,但在以前的狀態下進行交互
即使視頻的預覽圖層顯示在屏幕上並顯示相機,「開始」按鈕也可以正常工作。但是,當我開始錄製時,我會切換按鈕,使「開始」按鈕隱藏,「停止」按鈕隱藏= false。
開始按鈕的工作原理 - 當視頻預覽在屏幕上並正在更新時按下,但實際錄製(抓取緩衝區中的樣本並將其寫入文件 - 儘管我可以看到,UIKit沒有任何關係)沒有開始。
當視頻錄製處於活動狀態時,顯示「停止」按鈕並且「開始」按鈕處於隱藏狀態,可見的停止按鈕不可按下,但仍可按下隱藏的開始按鈕。
我試着移動包含視頻的UIView上方的Stop按鈕,以防CALayer或其他東西拉伸與剪裁的UIView邊界。這沒有幫助。停止按鈕總是表現得好像沒有啓用 - 但它已啓用,並且沒有任何東西看起來與按鈕重疊。該按鈕工作正常,如果包含視頻的UIView(我將重申,它低於破損的按鈕)從不顯示。
誰能想到爲什麼會發生這種情況?我立即想到了setNeedsLayout和setNeedsDisplay,並嘗試將其中的一些內容拋出,因爲它幾乎就像視圖更新了我的隱藏或顯示按鈕的請求,但交互層沒有更新。
感謝