mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-09-07 21:20:07 +00:00
Fix CustomCollectionView-Swift sample (#22)
* Updated copyright notices * Fixed crash and removed storyboard
This commit is contained in:
parent
82b7806473
commit
a4ddc072a4
12
examples/CustomCollectionView-Swift/Sample.xcodeproj/project.pbxproj
Normal file → Executable file
12
examples/CustomCollectionView-Swift/Sample.xcodeproj/project.pbxproj
Normal file → Executable file
@ -10,7 +10,6 @@
|
|||||||
27F2D2683285DCB73EE734BB /* Pods_Sample.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F7DA4A9952245B7E9BA8201F /* Pods_Sample.framework */; };
|
27F2D2683285DCB73EE734BB /* Pods_Sample.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F7DA4A9952245B7E9BA8201F /* Pods_Sample.framework */; };
|
||||||
5D823AD51DD3B7770075E14A /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D823AD41DD3B7770075E14A /* AppDelegate.swift */; };
|
5D823AD51DD3B7770075E14A /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D823AD41DD3B7770075E14A /* AppDelegate.swift */; };
|
||||||
5D823AD71DD3B7770075E14A /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D823AD61DD3B7770075E14A /* ViewController.swift */; };
|
5D823AD71DD3B7770075E14A /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D823AD61DD3B7770075E14A /* ViewController.swift */; };
|
||||||
5D823ADA1DD3B7770075E14A /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5D823AD81DD3B7770075E14A /* Main.storyboard */; };
|
|
||||||
5D823ADC1DD3B7770075E14A /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 5D823ADB1DD3B7770075E14A /* Assets.xcassets */; };
|
5D823ADC1DD3B7770075E14A /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 5D823ADB1DD3B7770075E14A /* Assets.xcassets */; };
|
||||||
5D823ADF1DD3B7770075E14A /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5D823ADD1DD3B7770075E14A /* LaunchScreen.storyboard */; };
|
5D823ADF1DD3B7770075E14A /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5D823ADD1DD3B7770075E14A /* LaunchScreen.storyboard */; };
|
||||||
5D823AE71DD3B7D30075E14A /* MosaicCollectionViewLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D823AE61DD3B7D30075E14A /* MosaicCollectionViewLayout.swift */; };
|
5D823AE71DD3B7D30075E14A /* MosaicCollectionViewLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D823AE61DD3B7D30075E14A /* MosaicCollectionViewLayout.swift */; };
|
||||||
@ -21,7 +20,6 @@
|
|||||||
5D823AD11DD3B7770075E14A /* Sample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Sample.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
5D823AD11DD3B7770075E14A /* Sample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Sample.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
5D823AD41DD3B7770075E14A /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
5D823AD41DD3B7770075E14A /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
||||||
5D823AD61DD3B7770075E14A /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = "<group>"; };
|
5D823AD61DD3B7770075E14A /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = "<group>"; };
|
||||||
5D823AD91DD3B7770075E14A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
|
|
||||||
5D823ADB1DD3B7770075E14A /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
5D823ADB1DD3B7770075E14A /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||||
5D823ADE1DD3B7770075E14A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
5D823ADE1DD3B7770075E14A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
||||||
5D823AE01DD3B7770075E14A /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
5D823AE01DD3B7770075E14A /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||||
@ -78,7 +76,6 @@
|
|||||||
5D823AD61DD3B7770075E14A /* ViewController.swift */,
|
5D823AD61DD3B7770075E14A /* ViewController.swift */,
|
||||||
5D823AE81DD3B7D70075E14A /* ImageCellNode.swift */,
|
5D823AE81DD3B7D70075E14A /* ImageCellNode.swift */,
|
||||||
5D823AE61DD3B7D30075E14A /* MosaicCollectionViewLayout.swift */,
|
5D823AE61DD3B7D30075E14A /* MosaicCollectionViewLayout.swift */,
|
||||||
5D823AD81DD3B7770075E14A /* Main.storyboard */,
|
|
||||||
5D823ADB1DD3B7770075E14A /* Assets.xcassets */,
|
5D823ADB1DD3B7770075E14A /* Assets.xcassets */,
|
||||||
5D823ADD1DD3B7770075E14A /* LaunchScreen.storyboard */,
|
5D823ADD1DD3B7770075E14A /* LaunchScreen.storyboard */,
|
||||||
5D823AE01DD3B7770075E14A /* Info.plist */,
|
5D823AE01DD3B7770075E14A /* Info.plist */,
|
||||||
@ -159,7 +156,6 @@
|
|||||||
files = (
|
files = (
|
||||||
5D823ADF1DD3B7770075E14A /* LaunchScreen.storyboard in Resources */,
|
5D823ADF1DD3B7770075E14A /* LaunchScreen.storyboard in Resources */,
|
||||||
5D823ADC1DD3B7770075E14A /* Assets.xcassets in Resources */,
|
5D823ADC1DD3B7770075E14A /* Assets.xcassets in Resources */,
|
||||||
5D823ADA1DD3B7770075E14A /* Main.storyboard in Resources */,
|
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
@ -228,14 +224,6 @@
|
|||||||
/* End PBXSourcesBuildPhase section */
|
/* End PBXSourcesBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXVariantGroup section */
|
/* Begin PBXVariantGroup section */
|
||||||
5D823AD81DD3B7770075E14A /* Main.storyboard */ = {
|
|
||||||
isa = PBXVariantGroup;
|
|
||||||
children = (
|
|
||||||
5D823AD91DD3B7770075E14A /* Base */,
|
|
||||||
);
|
|
||||||
name = Main.storyboard;
|
|
||||||
sourceTree = "<group>";
|
|
||||||
};
|
|
||||||
5D823ADD1DD3B7770075E14A /* LaunchScreen.storyboard */ = {
|
5D823ADD1DD3B7770075E14A /* LaunchScreen.storyboard */ = {
|
||||||
isa = PBXVariantGroup;
|
isa = PBXVariantGroup;
|
||||||
children = (
|
children = (
|
||||||
|
@ -2,19 +2,22 @@
|
|||||||
// AppDelegate.swift
|
// AppDelegate.swift
|
||||||
// Sample
|
// Sample
|
||||||
//
|
//
|
||||||
// Created by Rajeev Gupta on 11/9/16.
|
|
||||||
//
|
|
||||||
// Copyright (c) 2014-present, Facebook, Inc. All rights reserved.
|
// Copyright (c) 2014-present, Facebook, Inc. All rights reserved.
|
||||||
// This source code is licensed under the BSD-style license found in the
|
// This source code is licensed under the BSD-style license found in the
|
||||||
// LICENSE file in the root directory of this source tree. An additional grant
|
// LICENSE file in the root directory of this source tree. An additional grant
|
||||||
// of patent rights can be found in the PATENTS file in the same directory.
|
// of patent rights can be found in the PATENTS file in the same directory.
|
||||||
|
// Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present,
|
||||||
|
// Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
//
|
//
|
||||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
//
|
||||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
// FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
//
|
//
|
||||||
|
|
||||||
import UIKit
|
import UIKit
|
||||||
@ -27,6 +30,13 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
|
|||||||
|
|
||||||
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
|
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
|
||||||
// Override point for customization after application launch.
|
// Override point for customization after application launch.
|
||||||
|
let window = UIWindow(frame: UIScreen.main.bounds)
|
||||||
|
window.backgroundColor = .white
|
||||||
|
window.rootViewController = ViewController()
|
||||||
|
window.makeKeyAndVisible()
|
||||||
|
|
||||||
|
self.window = window
|
||||||
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,26 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="11134" systemVersion="15F34" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="BYZ-38-t0r">
|
|
||||||
<dependencies>
|
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="11106"/>
|
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
|
||||||
</dependencies>
|
|
||||||
<scenes>
|
|
||||||
<!--View Controller-->
|
|
||||||
<scene sceneID="tne-QT-ifu">
|
|
||||||
<objects>
|
|
||||||
<viewController id="BYZ-38-t0r" customClass="ViewController" customModuleProvider="target" sceneMemberID="viewController">
|
|
||||||
<layoutGuides>
|
|
||||||
<viewControllerLayoutGuide type="top" id="y3c-jy-aDJ"/>
|
|
||||||
<viewControllerLayoutGuide type="bottom" id="wfy-db-euE"/>
|
|
||||||
</layoutGuides>
|
|
||||||
<view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
|
|
||||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
|
||||||
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
|
||||||
</view>
|
|
||||||
</viewController>
|
|
||||||
<placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
|
|
||||||
</objects>
|
|
||||||
</scene>
|
|
||||||
</scenes>
|
|
||||||
</document>
|
|
@ -2,19 +2,22 @@
|
|||||||
// ImageCellNode.swift
|
// ImageCellNode.swift
|
||||||
// Sample
|
// Sample
|
||||||
//
|
//
|
||||||
// Created by Rajeev Gupta on 11/9/16.
|
|
||||||
//
|
|
||||||
// Copyright (c) 2014-present, Facebook, Inc. All rights reserved.
|
// Copyright (c) 2014-present, Facebook, Inc. All rights reserved.
|
||||||
// This source code is licensed under the BSD-style license found in the
|
// This source code is licensed under the BSD-style license found in the
|
||||||
// LICENSE file in the root directory of this source tree. An additional grant
|
// LICENSE file in the root directory of this source tree. An additional grant
|
||||||
// of patent rights can be found in the PATENTS file in the same directory.
|
// of patent rights can be found in the PATENTS file in the same directory.
|
||||||
|
// Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present,
|
||||||
|
// Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
//
|
//
|
||||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
//
|
||||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
// FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
//
|
//
|
||||||
|
|
||||||
import UIKit
|
import UIKit
|
||||||
@ -29,9 +32,6 @@ class ImageCellNode: ASCellNode {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override func layoutSpecThatFits(_ constrainedSize: ASSizeRange) -> ASLayoutSpec {
|
override func layoutSpecThatFits(_ constrainedSize: ASSizeRange) -> ASLayoutSpec {
|
||||||
let imageSize = imageNode.image?.size
|
|
||||||
print("imageNode= \(imageNode.bounds), image=\(imageSize)")
|
|
||||||
|
|
||||||
var imageRatio: CGFloat = 0.5
|
var imageRatio: CGFloat = 0.5
|
||||||
if imageNode.image != nil {
|
if imageNode.image != nil {
|
||||||
imageRatio = (imageNode.image?.size.height)! / (imageNode.image?.size.width)!
|
imageRatio = (imageNode.image?.size.height)! / (imageNode.image?.size.width)!
|
||||||
|
2
examples/CustomCollectionView-Swift/Sample/Info.plist
Normal file → Executable file
2
examples/CustomCollectionView-Swift/Sample/Info.plist
Normal file → Executable file
@ -22,8 +22,6 @@
|
|||||||
<true/>
|
<true/>
|
||||||
<key>UILaunchStoryboardName</key>
|
<key>UILaunchStoryboardName</key>
|
||||||
<string>LaunchScreen</string>
|
<string>LaunchScreen</string>
|
||||||
<key>UIMainStoryboardFile</key>
|
|
||||||
<string>Main</string>
|
|
||||||
<key>UIRequiredDeviceCapabilities</key>
|
<key>UIRequiredDeviceCapabilities</key>
|
||||||
<array>
|
<array>
|
||||||
<string>armv7</string>
|
<string>armv7</string>
|
||||||
|
19
examples/CustomCollectionView-Swift/Sample/MosaicCollectionViewLayout.swift
Normal file → Executable file
19
examples/CustomCollectionView-Swift/Sample/MosaicCollectionViewLayout.swift
Normal file → Executable file
@ -2,19 +2,22 @@
|
|||||||
// MosaicCollectionViewLayout
|
// MosaicCollectionViewLayout
|
||||||
// Sample
|
// Sample
|
||||||
//
|
//
|
||||||
// Created by Rajeev Gupta on 11/9/16.
|
|
||||||
//
|
|
||||||
// Copyright (c) 2014-present, Facebook, Inc. All rights reserved.
|
// Copyright (c) 2014-present, Facebook, Inc. All rights reserved.
|
||||||
// This source code is licensed under the BSD-style license found in the
|
// This source code is licensed under the BSD-style license found in the
|
||||||
// LICENSE file in the root directory of this source tree. An additional grant
|
// LICENSE file in the root directory of this source tree. An additional grant
|
||||||
// of patent rights can be found in the PATENTS file in the same directory.
|
// of patent rights can be found in the PATENTS file in the same directory.
|
||||||
|
// Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present,
|
||||||
|
// Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
//
|
//
|
||||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
//
|
||||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
// FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
//
|
//
|
||||||
|
|
||||||
import Foundation
|
import Foundation
|
||||||
|
@ -2,37 +2,40 @@
|
|||||||
// ViewController.swift
|
// ViewController.swift
|
||||||
// Sample
|
// Sample
|
||||||
//
|
//
|
||||||
// Created by Rajeev Gupta on 11/9/16.
|
|
||||||
//
|
|
||||||
// Copyright (c) 2014-present, Facebook, Inc. All rights reserved.
|
// Copyright (c) 2014-present, Facebook, Inc. All rights reserved.
|
||||||
// This source code is licensed under the BSD-style license found in the
|
// This source code is licensed under the BSD-style license found in the
|
||||||
// LICENSE file in the root directory of this source tree. An additional grant
|
// LICENSE file in the root directory of this source tree. An additional grant
|
||||||
// of patent rights can be found in the PATENTS file in the same directory.
|
// of patent rights can be found in the PATENTS file in the same directory.
|
||||||
|
// Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present,
|
||||||
|
// Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
//
|
//
|
||||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
//
|
||||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
// FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
//
|
//
|
||||||
|
|
||||||
import UIKit
|
import UIKit
|
||||||
import AsyncDisplayKit
|
import AsyncDisplayKit
|
||||||
|
|
||||||
class ViewController: UIViewController, MosaicCollectionViewLayoutDelegate, ASCollectionDataSource, ASCollectionDelegate {
|
class ViewController: ASViewController<ASCollectionNode>, MosaicCollectionViewLayoutDelegate, ASCollectionDataSource, ASCollectionDelegate {
|
||||||
|
|
||||||
var _sections = [[UIImage]]()
|
var _sections = [[UIImage]]()
|
||||||
let _collectionNode: ASCollectionNode!
|
let _collectionNode: ASCollectionNode
|
||||||
let _layoutInspector = MosaicCollectionViewLayoutInspector()
|
let _layoutInspector = MosaicCollectionViewLayoutInspector()
|
||||||
let kNumberOfImages: UInt = 14
|
let kNumberOfImages: UInt = 14
|
||||||
|
|
||||||
required init?(coder aDecoder: NSCoder) {
|
init() {
|
||||||
let layout = MosaicCollectionViewLayout()
|
let layout = MosaicCollectionViewLayout()
|
||||||
layout.numberOfColumns = 3;
|
layout.numberOfColumns = 3;
|
||||||
layout.headerHeight = 44;
|
layout.headerHeight = 44;
|
||||||
_collectionNode = ASCollectionNode(frame: CGRect.zero, collectionViewLayout: layout)
|
_collectionNode = ASCollectionNode(frame: CGRect.zero, collectionViewLayout: layout)
|
||||||
super.init(coder: aDecoder)
|
super.init(node: _collectionNode)
|
||||||
layout.delegate = self
|
layout.delegate = self
|
||||||
|
|
||||||
_sections.append([]);
|
_sections.append([]);
|
||||||
@ -48,12 +51,14 @@ class ViewController: UIViewController, MosaicCollectionViewLayoutDelegate, ASCo
|
|||||||
|
|
||||||
_collectionNode.dataSource = self;
|
_collectionNode.dataSource = self;
|
||||||
_collectionNode.delegate = self;
|
_collectionNode.delegate = self;
|
||||||
_collectionNode.view.layoutInspector = _layoutInspector
|
|
||||||
_collectionNode.backgroundColor = UIColor.white
|
_collectionNode.backgroundColor = UIColor.white
|
||||||
_collectionNode.view.isScrollEnabled = true
|
|
||||||
_collectionNode.registerSupplementaryNode(ofKind: UICollectionElementKindSectionHeader)
|
_collectionNode.registerSupplementaryNode(ofKind: UICollectionElementKindSectionHeader)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
required init?(coder aDecoder: NSCoder) {
|
||||||
|
fatalError("init(coder:) has not been implemented")
|
||||||
|
}
|
||||||
|
|
||||||
deinit {
|
deinit {
|
||||||
_collectionNode.dataSource = nil;
|
_collectionNode.dataSource = nil;
|
||||||
_collectionNode.delegate = nil;
|
_collectionNode.delegate = nil;
|
||||||
@ -61,13 +66,10 @@ class ViewController: UIViewController, MosaicCollectionViewLayoutDelegate, ASCo
|
|||||||
|
|
||||||
override func viewDidLoad() {
|
override func viewDidLoad() {
|
||||||
super.viewDidLoad()
|
super.viewDidLoad()
|
||||||
self.view.addSubnode(_collectionNode!)
|
_collectionNode.view.layoutInspector = _layoutInspector
|
||||||
|
_collectionNode.view.isScrollEnabled = true
|
||||||
}
|
}
|
||||||
|
|
||||||
override func viewWillLayoutSubviews() {
|
|
||||||
_collectionNode.frame = self.view.bounds;
|
|
||||||
}
|
|
||||||
|
|
||||||
func collectionNode(_ collectionNode: ASCollectionNode, nodeForItemAt indexPath: IndexPath) -> ASCellNode {
|
func collectionNode(_ collectionNode: ASCollectionNode, nodeForItemAt indexPath: IndexPath) -> ASCellNode {
|
||||||
let image = _sections[indexPath.section][indexPath.item]
|
let image = _sections[indexPath.section][indexPath.item]
|
||||||
return ImageCellNode(with: image)
|
return ImageCellNode(with: image)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user