美文网首页
iOS 11 下 UICollectionView 的Heade

iOS 11 下 UICollectionView 的Heade

作者: Bytesking | 来源:发表于2017-11-16 10:05 被阅读0次

    这个问题在之前的 iOS 10 上是没有的,iOS 11 新出之后才出现。在使用了- collectionView: viewForSupplementaryElementOfKind: atIndexPath:的 UICollectionView 页面中,滑动页面的时候滚动条会被 HeaderView 遮挡.

    修改前的样子:

    //
    //  CustomCollectionReusableView.m
    //  EMall
    //
    //  Created by YJHou on 2017/9/16.
    //  Copyright © 2017年 stackhou . All rights reserved.
    //
    
    #import "CustomCollectionReusableView.h"
    
    @interface CustomCollectionReusableView ()
    
    @property (nonatomic, strong) UILabel *showLabel; /**< 显示控件 */
    
    @end
    
    @implementation CustomCollectionReusableView
    
    - (void)layoutSubviews {
        [super layoutSubviews];
        [self _setUpSubViews];
    }
    
    - (void)_setUpSubViews {
        [self addSubview:self.showLabel];
    }
    
    #pragma mark - Lazy
    - (UILabel *)showLabel{    
        if (!_showLabel) {
            _showLabel = [[UILabel alloc] initWithFrame:CGRectMake(20, 20, 120, self.frame.size.height)];
            _showLabel.font = [UIFont systemFontOfSize:13];
            _showLabel.textAlignment = NSTextAlignmentLeft;
            _showLabel.backgroundColor = [UIColor clearColor];
            _showLabel.textColor = [UIColor redColor];
        }
        return _showLabel;
    }
    
    @end
    

    修复完成后

    //
    //  CustomCollectionReusableView.m
    //  EMall
    //
    //  Created by YJHou on 2017/9/16.
    //  Copyright © 2017年 stackhou . All rights reserved.
    //
    
    #import "CustomCollectionReusableView.h"
    
    #ifdef __IPHONE_11_0
    @interface CustomLayer : CALayer
    
    @end
    #endif
    
    @interface CustomCollectionReusableView ()
    
    @property (nonatomic, strong) UILabel *showLabel; /**< 显示控件 */
    
    @end
    
    #ifdef __IPHONE_11_0
    @implementation CustomLayer
    
    - (CGFloat) zPosition {
        return 0;
    }
    
    @end
    #endif
    
    @implementation CustomCollectionReusableView
    
    - (void)layoutSubviews {
        [super layoutSubviews];
        [self _setUpSubViews];
    }
    
    - (void)_setUpSubViews {
        [self addSubview:self.showLabel];
    }
    
    #pragma mark - Lazy
    - (UILabel *)showLabel{    
        if (!_showLabel) {
            _showLabel = [[UILabel alloc] initWithFrame:CGRectMake(20, 20, 120, self.frame.size.height)];
            _showLabel.font = [UIFont systemFontOfSize:13];
            _showLabel.textAlignment = NSTextAlignmentLeft;
            _showLabel.backgroundColor = [UIColor clearColor];
            _showLabel.textColor = [UIColor redColor];
        }
        return _showLabel;
    }
    
    #ifdef __IPHONE_11_0
    + (Class)layerClass {
        return [CustomLayer class];
    }
    #endif
    
    @end
    

    相关文章

      网友评论

          本文标题:iOS 11 下 UICollectionView 的Heade

          本文链接:https://www.haomeiwen.com/subject/jdzkvxtx.html