zoukankan      html  css  js  c++  java
  • 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];
    }
    
  • 相关阅读:
    P1535 游荡的奶牛
    rmq
    bsgs算法详解
    P1396 营救
    P1547 Out of Hay
    P1474 货币系统 Money Systems
    P1209 [USACO1.3]修理牛棚 Barn Repair
    P1208 [USACO1.3]混合牛奶 Mixing Milk
    P1108 低价购买
    android屏幕适配的全攻略--支持不同的屏幕尺寸适配平板和手机
  • 原文地址:https://www.cnblogs.com/ihojin/p/calayer-autoresizingmask.html
Copyright © 2011-2022 走看看