mirror of
https://github.com/danbee/persephone
synced 2025-03-04 08:39:11 +00:00
Move album layout to it's own Layout file
This commit is contained in:
parent
2e6ec19515
commit
4b82d2070b
@ -18,6 +18,7 @@
|
||||
E408D3C2220E134F0006D9BE /* AlbumViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E408D3C1220E134F0006D9BE /* AlbumViewController.swift */; };
|
||||
E408D3CA220E341D0006D9BE /* AlbumItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = E408D3C8220E341D0006D9BE /* AlbumItem.swift */; };
|
||||
E408D3CB220E341D0006D9BE /* AlbumItem.xib in Resources */ = {isa = PBXBuildFile; fileRef = E408D3C9220E341D0006D9BE /* AlbumItem.xib */; };
|
||||
E40FE719221B48E300A4223F /* AlbumViewLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = E40FE718221B48E300A4223F /* AlbumViewLayout.swift */; };
|
||||
E41B22C021FB6BBA00D544F6 /* libmpdclient.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = E41B22BF21FB6BBA00D544F6 /* libmpdclient.2.dylib */; settings = {ATTRIBUTES = (Required, ); }; };
|
||||
E41B22C121FB6C3300D544F6 /* libmpdclient.2.dylib in Embed Libraries */ = {isa = PBXBuildFile; fileRef = E41B22BF21FB6BBA00D544F6 /* libmpdclient.2.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
|
||||
E41B22C621FB932700D544F6 /* MPDClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = E41B22C521FB932700D544F6 /* MPDClient.swift */; };
|
||||
@ -82,6 +83,7 @@
|
||||
E408D3C1220E134F0006D9BE /* AlbumViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlbumViewController.swift; sourceTree = "<group>"; };
|
||||
E408D3C8220E341D0006D9BE /* AlbumItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlbumItem.swift; sourceTree = "<group>"; };
|
||||
E408D3C9220E341D0006D9BE /* AlbumItem.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = AlbumItem.xib; sourceTree = "<group>"; };
|
||||
E40FE718221B48E300A4223F /* AlbumViewLayout.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlbumViewLayout.swift; sourceTree = "<group>"; };
|
||||
E41B22BF21FB6BBA00D544F6 /* libmpdclient.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libmpdclient.2.dylib; path = libmpdclient/output/libmpdclient.2.dylib; sourceTree = "<group>"; };
|
||||
E41B22C421FB715A00D544F6 /* module.modulemap */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.module-map"; path = module.modulemap; sourceTree = "<group>"; };
|
||||
E41B22C521FB932700D544F6 /* MPDClient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MPDClient.swift; sourceTree = "<group>"; };
|
||||
@ -181,6 +183,7 @@
|
||||
E407861A2110CE6E006887B1 /* Persephone */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
E40FE717221B48CE00A4223F /* Layouts */,
|
||||
E407861F2110CE70006887B1 /* Assets.xcassets */,
|
||||
E408D3B7220DE8CC0006D9BE /* Extensions */,
|
||||
E4D1B598220BA3C90026F233 /* Resources */,
|
||||
@ -239,6 +242,14 @@
|
||||
path = Views;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
E40FE717221B48CE00A4223F /* Layouts */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
E40FE718221B48E300A4223F /* AlbumViewLayout.swift */,
|
||||
);
|
||||
path = Layouts;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
E41B22BE21FB6B3300D544F6 /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
@ -492,6 +503,7 @@
|
||||
E4928E0B2218D62A001D4BEA /* CGColor.swift in Sources */,
|
||||
E4A642DA22090CBE00067D21 /* Status.swift in Sources */,
|
||||
E4E8CC942206097F0024217A /* NotificationsController.swift in Sources */,
|
||||
E40FE719221B48E300A4223F /* AlbumViewLayout.swift in Sources */,
|
||||
E408D3B6220DD8970006D9BE /* Notification.swift in Sources */,
|
||||
E408D3B9220DE98F0006D9BE /* NSUserInterfaceItemIdentifier.swift in Sources */,
|
||||
E4EB2379220F10B8008C70C0 /* Pair.swift in Sources */,
|
||||
|
||||
@ -56,22 +56,5 @@ class AlbumViewController: NSViewController,
|
||||
return albumItem
|
||||
}
|
||||
|
||||
func collectionView(_ collectionView: NSCollectionView, layout: NSCollectionViewLayout, sizeForItemAt: IndexPath) -> NSSize {
|
||||
let width = collectionView.frame.size.width
|
||||
var divider: CGFloat = 1
|
||||
var itemWidth: CGFloat = 0
|
||||
|
||||
repeat {
|
||||
let totalPaddingWidth = paddingWidth * 2
|
||||
let totalGutterWidth = (divider - 1) * (gutterWidth + 1)
|
||||
itemWidth = (width - totalPaddingWidth - totalGutterWidth) / divider
|
||||
divider = divider + 1
|
||||
} while itemWidth > 180
|
||||
|
||||
let itemHeight = itemWidth + 39
|
||||
|
||||
return NSSize(width: itemWidth, height: itemHeight)
|
||||
}
|
||||
|
||||
@IBOutlet var albumCollectionView: NSCollectionView!
|
||||
}
|
||||
|
||||
49
Persephone/Layouts/AlbumViewLayout.swift
Normal file
49
Persephone/Layouts/AlbumViewLayout.swift
Normal file
@ -0,0 +1,49 @@
|
||||
//
|
||||
// AlbumViewLayout.swift
|
||||
// Persephone
|
||||
//
|
||||
// Created by Daniel Barber on 2019/2/18.
|
||||
// Copyright © 2019 Dan Barber. All rights reserved.
|
||||
//
|
||||
|
||||
import Cocoa
|
||||
|
||||
class AlbumViewLayout: NSCollectionViewFlowLayout {
|
||||
let maxItemWidth: CGFloat = 180
|
||||
let albumInfoHeight: CGFloat = 39
|
||||
|
||||
required init?(coder aDecoder: NSCoder) {
|
||||
super.init()
|
||||
|
||||
minimumLineSpacing = 20
|
||||
minimumInteritemSpacing = 20
|
||||
sectionInset = NSEdgeInsets(
|
||||
top: 20,
|
||||
left: 40,
|
||||
bottom: 60,
|
||||
right: 40
|
||||
)
|
||||
}
|
||||
|
||||
override func prepare() {
|
||||
super.prepare()
|
||||
|
||||
guard let collectionView = collectionView
|
||||
else { return }
|
||||
|
||||
let width = collectionView.bounds.size.width
|
||||
var divider: CGFloat = 1
|
||||
var itemWidth: CGFloat = 0
|
||||
|
||||
repeat {
|
||||
let totalPaddingWidth = sectionInset.left + sectionInset.right
|
||||
let totalGutterWidth = (divider - 1) * (minimumInteritemSpacing)
|
||||
itemWidth = (width - totalPaddingWidth - totalGutterWidth - 1) / divider
|
||||
divider = divider + 1
|
||||
} while itemWidth > maxItemWidth
|
||||
|
||||
let itemHeight = itemWidth + albumInfoHeight
|
||||
|
||||
itemSize = NSSize(width: itemWidth, height: itemHeight)
|
||||
}
|
||||
}
|
||||
@ -931,10 +931,7 @@
|
||||
<collectionView id="lfq-AB-epE">
|
||||
<rect key="frame" x="0.0" y="0.0" width="450" height="158"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES"/>
|
||||
<collectionViewFlowLayout key="collectionViewLayout" minimumInteritemSpacing="20" minimumLineSpacing="20" id="K0l-P8-OW0">
|
||||
<size key="itemSize" width="206" height="248"/>
|
||||
<edgeInsets key="sectionInset" left="40" right="40" top="20" bottom="60"/>
|
||||
</collectionViewFlowLayout>
|
||||
<collectionViewLayout key="collectionViewLayout" id="YE8-sD-l5P" customClass="AlbumViewLayout" customModule="Persephone" customModuleProvider="target"/>
|
||||
<color key="primaryBackgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
<connections>
|
||||
<outlet property="dataSource" destination="gPn-fP-LFc" id="2VB-5V-ltv"/>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user