CALayer: autoresizingMask

UIView 可以设定 autoresizingMask,当它的 superView 尺寸改变时,适应何种变化。

不过 CALayer 却没有这个属性,如和做到让 CALayer 和 UIView 一样?可以这样:

// in ViewController
- (void)viewWillLayoutSubviews
{
    _playerLayer.frame = self.view.bounds;
}

// in View
- (void)layoutSublayersOfLayer:(CALayer *)layer
{
    _playerLayer.frame = self.bounds;
}

 这不是一个好的办法。

当当~

自定义一个 UIView,重写它的 + (Class)layerClass 方法,像这样

@interface RFPlayerLayerView : UIView

@end

@implementation RFPlayerLayerView

+ (Class)layerClass
{
    return [AVPlayerLayer class];
}

@end

 使用时设置一些参数,就可以完美拥有 UIView 的 autoresizingMask 的属性了

- (void)setup
{
    _layerView = [[RFPlayerLayerView alloc] initWithFrame:rect];
    _playerLayer = (AVPlayerLayer *)[_layerView layer];
    _playerLayer.player = _player;
    _playerLayer.videoGravity = AVLayerVideoGravityResizeAspect;
    _layerView.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;
    [self.view addSubview:_layerView];
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值