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];
    }
    
  • 相关阅读:
    JQuery学习四(过滤选择器)
    JQuery学习三(隐式迭代和节点遍历)
    JQuery学习二(获取元素控件并控制)
    JQuery学习一
    Dom中select练习
    DOM动态操纵控件案例
    DOM学习控件定位和案例
    DOM案例五星评分控件
    DOM动态增加控件
    DOM用TagName操作标签
  • 原文地址:https://www.cnblogs.com/ihojin/p/calayer-autoresizingmask.html
Copyright © 2011-2022 走看看