MacOS 开发收录

MacOS 开发(八):NSCollectionView纯代码实

2020-04-02  本文已影响0人  SoaringHeart

因为系统机制导致,纯代码实现滚动视图的时候必须自己实现 scrollView,随封装如下:


3211585810147_.pic.jpg

🌰🌰:

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do view setup here.

    [self.view addSubview:self.ctView.enclosingScrollView];
}

- (void)viewDidLayout{
    [super viewDidLayout];
    
    [self.ctView.enclosingScrollView makeConstraints:^(MASConstraintMaker *make) {
        make.edges.equalTo(self.ctView.enclosingScrollView.superview);
    }];
}

#pragma mark -lazy
-(NNCollectionView *)ctView{
    if (!_ctView) {
        _ctView = ({
            NNCollectionView *view = [[NNCollectionView alloc]initWithFrame:self.view.bounds];
            view.collectionViewLayout = [self createFlowLayout];
            [view registerClass:NSCTViewCellOne.class forItemWithIdentifier:@"Slide"];
            view.selectable = true;
            view.dataSource = self;
            view.delegate = self;
            view;
        });
    }
    return _ctView;
}

视图封装:

class NNCollectionView: NSCollectionView {
    
    lazy var scrollView: NSScrollView = {
        let scrollView = NSScrollView()
        scrollView.backgroundColor = NSColor.red
        scrollView.drawsBackground = false
        scrollView.hasHorizontalScroller = true
        scrollView.hasVerticalScroller = true
        scrollView.autohidesScrollers = true
        
        return scrollView
    }()
    
    // MARK: -lifecycle
    override init(frame frameRect: NSRect) {
        super.init(frame: frameRect)
        
        setupUI()
    }
    
    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    override func draw(_ dirtyRect: NSRect) {
        super.draw(dirtyRect)

        // Drawing code here.
    }
    
    // MARK: -funtions
    func setupUI() {
        scrollView.documentView = self
        
    }
    
}

Github

上一篇 下一篇

猜你喜欢

热点阅读