diff --git a/YogaKit/YogaKitSample/YogaKitSample.xcodeproj/project.pbxproj b/YogaKit/YogaKitSample/YogaKitSample.xcodeproj/project.pbxproj index b379ab01..90b1f9c6 100644 --- a/YogaKit/YogaKitSample/YogaKitSample.xcodeproj/project.pbxproj +++ b/YogaKit/YogaKitSample/YogaKitSample.xcodeproj/project.pbxproj @@ -27,6 +27,7 @@ 15E1C34A24E568420086A4E6 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 15E1C34924E568420086A4E6 /* main.m */; }; 15E1C34F24E56A8A0086A4E6 /* dummy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 15E1C34E24E56A8A0086A4E6 /* dummy.swift */; }; 15E1C35124E56AB60086A4E6 /* libc++.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 15E1C35024E56AB60086A4E6 /* libc++.tbd */; }; + 15F7301F24E7C097000108AD /* AutoLayoutMixedViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 15F7301E24E7C097000108AD /* AutoLayoutMixedViewController.swift */; }; 40BD9F461E477A09002790A9 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40BD9F451E477A09002790A9 /* AppDelegate.swift */; }; 40BD9F4B1E47850C002790A9 /* BasicViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40BD9F4A1E47850C002790A9 /* BasicViewController.swift */; }; 40BD9F501E479079002790A9 /* SingleLabelCollectionCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40BD9F4F1E479079002790A9 /* SingleLabelCollectionCell.swift */; }; @@ -90,6 +91,7 @@ 15E1C34924E568420086A4E6 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 15E1C34E24E56A8A0086A4E6 /* dummy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = dummy.swift; sourceTree = ""; }; 15E1C35024E56AB60086A4E6 /* libc++.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS13.4.sdk/usr/lib/libc++.tbd"; sourceTree = DEVELOPER_DIR; }; + 15F7301E24E7C097000108AD /* AutoLayoutMixedViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutoLayoutMixedViewController.swift; sourceTree = ""; }; 1D2FF4D5FCA6A8C54A4074A3 /* Pods-YogaKitSample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-YogaKitSample.debug.xcconfig"; path = "Pods/Target Support Files/Pods-YogaKitSample/Pods-YogaKitSample.debug.xcconfig"; sourceTree = ""; }; 40BD9F451E477A09002790A9 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 40BD9F4A1E47850C002790A9 /* BasicViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = BasicViewController.swift; path = ViewControllers/BasicViewController.swift; sourceTree = ""; }; @@ -230,6 +232,7 @@ children = ( 40BD9F4A1E47850C002790A9 /* BasicViewController.swift */, 40BD9F511E479173002790A9 /* LayoutInclusionViewController.swift */, + 15F7301E24E7C097000108AD /* AutoLayoutMixedViewController.swift */, ); name = ViewControllers; sourceTree = ""; @@ -489,6 +492,7 @@ 638A94481E1F06D100A726AD /* ExamplesViewController.swift in Sources */, 40BD9F4B1E47850C002790A9 /* BasicViewController.swift in Sources */, 40BD9F461E477A09002790A9 /* AppDelegate.swift in Sources */, + 15F7301F24E7C097000108AD /* AutoLayoutMixedViewController.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/YogaKit/YogaKitSample/YogaKitSample/AutoLayoutMixedViewController.swift b/YogaKit/YogaKitSample/YogaKitSample/AutoLayoutMixedViewController.swift new file mode 100644 index 00000000..e7a40fb8 --- /dev/null +++ b/YogaKit/YogaKitSample/YogaKitSample/AutoLayoutMixedViewController.swift @@ -0,0 +1,74 @@ +// +// AutoLayoutMixedViewController.swift +// YogaKitSample +// +// Created by lvv on 2020/8/15. +// Copyright © 2020 facebook. All rights reserved. +// + +import UIKit +import YogaKit + +class AutoLayoutMixedViewController : UIViewController { + override func viewDidLoad() { + super.viewDidLoad() + + view.configureLayout { (layout) in + layout.isEnabled = true + layout.alignItems = .center + layout.justifyContent = .center + } + + let container = UIView() + container.backgroundColor = .orange + container.configureLayout { (layout) in + layout.isEnabled = true + + layout.paddingTop = 20 + layout.paddingLeft = 20 + layout.paddingBottom = 20 + layout.paddingRight = 70 + + layout.width = 100% + } + view.addSubview(container) + + let subView1 = UIView() + subView1.backgroundColor = .red + subView1.configureLayout { (layout) in + layout.isEnabled = true + layout.height = 30; + } + container.addSubview(subView1) + + let subView2 = UIView() + subView2.backgroundColor = .yellow + subView2.configureLayout { (layout) in + layout.isEnabled = true + layout.marginTop = 25 + layout.height = 10; + } + container.addSubview(subView2) + + let subView3 = UIView() + subView3.backgroundColor = .blue + subView3.configureLayout { (layout) in + layout.isEnabled = true + layout.marginTop = 25 + layout.height = 20; + } + container.addSubview(subView3) + + let subView4 = UIView() + subView4.backgroundColor = .green + subView4.translatesAutoresizingMaskIntoConstraints = false + container.addSubview(subView4) + + container.addConstraints([ + NSLayoutConstraint(item: subView4, attribute: .right, relatedBy: .equal, toItem: container, attribute: .right, multiplier: 1, constant: -10), + NSLayoutConstraint(item: subView4, attribute: .centerY, relatedBy: .equal, toItem: container, attribute: .centerY, multiplier: 1, constant: 0), + NSLayoutConstraint(item: subView4, attribute: .width, relatedBy: .equal, toItem: nil, attribute: .notAnAttribute, multiplier: 1, constant: 50), + NSLayoutConstraint(item: subView4, attribute: .height, relatedBy: .equal, toItem: nil, attribute: .notAnAttribute, multiplier: 1, constant: 50) + ]) + } +} diff --git a/YogaKit/YogaKitSample/YogaKitSample/ExamplesViewController.swift b/YogaKit/YogaKitSample/YogaKitSample/ExamplesViewController.swift index f7a19d56..612c88b6 100644 --- a/YogaKit/YogaKitSample/YogaKitSample/ExamplesViewController.swift +++ b/YogaKit/YogaKitSample/YogaKitSample/ExamplesViewController.swift @@ -40,7 +40,8 @@ final class ExamplesViewController: UIViewController, ListAdapterDataSource, Lis // Update this to array to create more examples. private let models: [ExampleModel] = [ExampleModel(title: "Basic Layout", controllerClass: BasicViewController.self), - ExampleModel(title: "Exclude Views in Layout", controllerClass: LayoutInclusionViewController.self)] + ExampleModel(title: "Exclude Views in Layout", controllerClass: LayoutInclusionViewController.self), + ExampleModel(title: "AutoLayout Mixed", controllerClass: AutoLayoutMixedViewController.self)] //MARK: UIViewController