1.这里 如果没有中间包的这层allBgView 而是直接把playControlBgView 增加到 self 上 就会出现 self 旋转了 但是 playControlBgView的位置没变
/** 三个大的分类的 view 的父视图 */
-(UIView *)allBgView{
if(!_allBgView){
UIView *allBgView = [[UIView alloc] initWithFrame:self.bounds];
[self addSubview:allBgView];
_allBgView = allBgView;
}
return _allBgView;
}
/** 暂停 声音 进度等控制按钮的背景的 view */
- (DYContainerBgView *)playControlBgView{
if(!_playControlBgView){
DYContainerBgView *playControlBgView = [[DYContainerBgView alloc] init];
playControlBgView.viewLv = DYVideoPlayerViewLv3;
[self.allBgView adjustSubViewsLv:playControlBgView];
_playControlBgView = playControlBgView;
[playControlBgView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.top.bottom.equalTo(self.allBgView);
}];
}
return _playControlBgView;
}
/** 旋转切换 frame 和父视图 */
[self removeFromSuperview];
UIView *keyW = [UIApplication sharedApplication].keyWindow;
[keyW addSubview:self];
[[UIDevice currentDevice] setValue:[NSNumber numberWithInteger:UIDeviceOrientationLandscapeLeft] forKey:@"orientation"];
[[UIApplication sharedApplication] setStatusBarOrientation: UIInterfaceOrientationLandscapeRight animated: NO];
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
[self updateConstraintsIfNeeded];
[UIView animateWithDuration:0.3 animations:^{
self.transform = CGAffineTransformMakeRotation(M_PI / 2);
self.frame = CGRectMake(0, 0, keyW.width, keyW.height);
self.allBgView.frame = self.bounds;
}completion:^(BOOL finished) {
self.fullScreen = YES;
self.zoomScreenBtn.selected = YES;
[self.gestureRecognizerBgView addGestureRecognizer:self.panGesture];
}];
}
/** 重新设置尺寸 */
-(void)setFrame:(CGRect)frame{
[super setFrame:frame];
self.allBgView.frame = self.bounds;
}