UITableView 或 UIScrollView 滾動時,視頻播放器內部視圖(如播放控制層)與外層容器不同步,出現錯位或尺寸異常。
將播放器視圖的佈局邏輯移至 layoutSubviews 方法中:
- (void)layoutSubviews {
[super layoutSubviews];
// 這裡更新 player 及其子視圖的 frame、constraints
self.playerView.frame = self.bounds;
// 其他子視圖佈局調整
}
layoutSubviews 在視圖尺寸改變、滾動顯示/隱藏時自動調用。setFrame: 或 KVO 中手動佈局,易導致時序問題。所有需要隨父視圖 bounds 變化而動態調整子視圖佈局的自定義 View/Cell。
這是 iOS 視圖佈局同步的標準最佳實踐。