Summary: Using yoga in Swift ```swift import UIKit import yoga let YGUndefined = Float.nan UIGraphicsBeginImageContextWithOptions(CGSize(width: 1, height: 1), true, 0) let scale = UIGraphicsGetCurrentContext()?.ctm.a ?? 1 UIGraphicsEndImageContext() let config = YGConfigNew() YGConfigSetUseWebDefaults(config, true) YGConfigSetPointScaleFactor(config, Float(scale)) let root = YGNodeNewWithConfig(config) YGNodeStyleSetFlexDirection(root, YGFlexDirectionRow) YGNodeStyleSetFlexWrap(root, YGWrapWrap) YGNodeStyleSetWidth(root, 200) for i in 0..<4 { let leaf = YGNodeNewWithConfig(config) YGNodeStyleSetAspectRatio(leaf, 1) YGNodeStyleSetWidthPercent(leaf, 50) YGNodeInsertChild(root, leaf, UInt32(i)) } YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGNodeStyleGetDirection(root)) for i in 0..<4 { let leaf = YGNodeGetChild(root, UInt32(i)) let left = YGNodeLayoutGetLeft(leaf) let top = YGNodeLayoutGetTop(leaf) let width = YGNodeLayoutGetWidth(leaf) let height = YGNodeLayoutGetHeight(leaf) print("leaf \(i): origin: \(left), \(top), size: \(width), \(height)") } let width = YGNodeLayoutGetWidth(root) let height = YGNodeLayoutGetHeight(root) print("root size: \(width), \(height)") YGNodeFreeRecursive(root) YGConfigFree(config) ``` Pull Request resolved: https://github.com/facebook/yoga/pull/1339 Reviewed By: cipolleschi Differential Revision: D48166958 Pulled By: NickGerleman fbshipit-source-id: 72fef99729d01c7ba291b11f047cf75fd39f7630
33 lines
800 B
Swift
33 lines
800 B
Swift
// swift-tools-version:5.0
|
|
// The swift-tools-version declares the minimum version of Swift required to build this package.
|
|
/*
|
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*/
|
|
|
|
|
|
import PackageDescription
|
|
|
|
let package = Package(
|
|
name: "yoga",
|
|
products: [
|
|
.library(name: "yoga", targets: [ "core" ])
|
|
],
|
|
targets: [
|
|
.target(
|
|
name: "core",
|
|
path: ".",
|
|
sources: [
|
|
"yoga"
|
|
],
|
|
publicHeadersPath: ".",
|
|
cxxSettings: [
|
|
.headerSearchPath(".")
|
|
]
|
|
)
|
|
],
|
|
cxxLanguageStandard: CXXLanguageStandard(rawValue: "c++17")
|
|
)
|