objc2_ui_kit/generated/
NSLayoutConstraint.rs1use core::ffi::*;
4use core::ptr::NonNull;
5use objc2::__framework_prelude::*;
6#[cfg(feature = "objc2-core-foundation")]
7use objc2_core_foundation::*;
8use objc2_foundation::*;
9
10use crate::*;
11
12pub type UILayoutPriority = c_float;
15
16pub static UILayoutPriorityRequired: UILayoutPriority = 1000 as _;
18
19pub static UILayoutPriorityDefaultHigh: UILayoutPriority = 750 as _;
21
22pub static UILayoutPriorityDragThatCanResizeScene: UILayoutPriority = 510 as _;
24
25pub static UILayoutPrioritySceneSizeStayPut: UILayoutPriority = 500 as _;
27
28pub static UILayoutPriorityDragThatCannotResizeScene: UILayoutPriority = 490 as _;
30
31pub static UILayoutPriorityDefaultLow: UILayoutPriority = 250 as _;
33
34pub static UILayoutPriorityFittingSizeLevel: UILayoutPriority = 50 as _;
36
37#[repr(transparent)]
40#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
41pub struct NSLayoutRelation(pub NSInteger);
42impl NSLayoutRelation {
43 #[doc(alias = "NSLayoutRelationLessThanOrEqual")]
44 pub const LessThanOrEqual: Self = Self(-1);
45 #[doc(alias = "NSLayoutRelationEqual")]
46 pub const Equal: Self = Self(0);
47 #[doc(alias = "NSLayoutRelationGreaterThanOrEqual")]
48 pub const GreaterThanOrEqual: Self = Self(1);
49}
50
51unsafe impl Encode for NSLayoutRelation {
52 const ENCODING: Encoding = NSInteger::ENCODING;
53}
54
55unsafe impl RefEncode for NSLayoutRelation {
56 const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
57}
58
59#[repr(transparent)]
62#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
63pub struct NSLayoutAttribute(pub NSInteger);
64impl NSLayoutAttribute {
65 #[doc(alias = "NSLayoutAttributeLeft")]
66 pub const Left: Self = Self(1);
67 #[doc(alias = "NSLayoutAttributeRight")]
68 pub const Right: Self = Self(2);
69 #[doc(alias = "NSLayoutAttributeTop")]
70 pub const Top: Self = Self(3);
71 #[doc(alias = "NSLayoutAttributeBottom")]
72 pub const Bottom: Self = Self(4);
73 #[doc(alias = "NSLayoutAttributeLeading")]
74 pub const Leading: Self = Self(5);
75 #[doc(alias = "NSLayoutAttributeTrailing")]
76 pub const Trailing: Self = Self(6);
77 #[doc(alias = "NSLayoutAttributeWidth")]
78 pub const Width: Self = Self(7);
79 #[doc(alias = "NSLayoutAttributeHeight")]
80 pub const Height: Self = Self(8);
81 #[doc(alias = "NSLayoutAttributeCenterX")]
82 pub const CenterX: Self = Self(9);
83 #[doc(alias = "NSLayoutAttributeCenterY")]
84 pub const CenterY: Self = Self(10);
85 #[doc(alias = "NSLayoutAttributeLastBaseline")]
86 pub const LastBaseline: Self = Self(11);
87 #[doc(alias = "NSLayoutAttributeBaseline")]
88 pub const Baseline: Self = Self(NSLayoutAttribute::LastBaseline.0);
89 #[doc(alias = "NSLayoutAttributeFirstBaseline")]
90 pub const FirstBaseline: Self = Self(12);
91 #[doc(alias = "NSLayoutAttributeLeftMargin")]
92 pub const LeftMargin: Self = Self(13);
93 #[doc(alias = "NSLayoutAttributeRightMargin")]
94 pub const RightMargin: Self = Self(14);
95 #[doc(alias = "NSLayoutAttributeTopMargin")]
96 pub const TopMargin: Self = Self(15);
97 #[doc(alias = "NSLayoutAttributeBottomMargin")]
98 pub const BottomMargin: Self = Self(16);
99 #[doc(alias = "NSLayoutAttributeLeadingMargin")]
100 pub const LeadingMargin: Self = Self(17);
101 #[doc(alias = "NSLayoutAttributeTrailingMargin")]
102 pub const TrailingMargin: Self = Self(18);
103 #[doc(alias = "NSLayoutAttributeCenterXWithinMargins")]
104 pub const CenterXWithinMargins: Self = Self(19);
105 #[doc(alias = "NSLayoutAttributeCenterYWithinMargins")]
106 pub const CenterYWithinMargins: Self = Self(20);
107 #[doc(alias = "NSLayoutAttributeNotAnAttribute")]
108 pub const NotAnAttribute: Self = Self(0);
109}
110
111unsafe impl Encode for NSLayoutAttribute {
112 const ENCODING: Encoding = NSInteger::ENCODING;
113}
114
115unsafe impl RefEncode for NSLayoutAttribute {
116 const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
117}
118
119#[repr(transparent)]
122#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
123pub struct NSLayoutFormatOptions(pub NSUInteger);
124bitflags::bitflags! {
125 impl NSLayoutFormatOptions: NSUInteger {
126 #[doc(alias = "NSLayoutFormatAlignAllLeft")]
127 const AlignAllLeft = 1<<NSLayoutAttribute::Left.0;
128 #[doc(alias = "NSLayoutFormatAlignAllRight")]
129 const AlignAllRight = 1<<NSLayoutAttribute::Right.0;
130 #[doc(alias = "NSLayoutFormatAlignAllTop")]
131 const AlignAllTop = 1<<NSLayoutAttribute::Top.0;
132 #[doc(alias = "NSLayoutFormatAlignAllBottom")]
133 const AlignAllBottom = 1<<NSLayoutAttribute::Bottom.0;
134 #[doc(alias = "NSLayoutFormatAlignAllLeading")]
135 const AlignAllLeading = 1<<NSLayoutAttribute::Leading.0;
136 #[doc(alias = "NSLayoutFormatAlignAllTrailing")]
137 const AlignAllTrailing = 1<<NSLayoutAttribute::Trailing.0;
138 #[doc(alias = "NSLayoutFormatAlignAllCenterX")]
139 const AlignAllCenterX = 1<<NSLayoutAttribute::CenterX.0;
140 #[doc(alias = "NSLayoutFormatAlignAllCenterY")]
141 const AlignAllCenterY = 1<<NSLayoutAttribute::CenterY.0;
142 #[doc(alias = "NSLayoutFormatAlignAllLastBaseline")]
143 const AlignAllLastBaseline = 1<<NSLayoutAttribute::LastBaseline.0;
144 #[doc(alias = "NSLayoutFormatAlignAllFirstBaseline")]
145 const AlignAllFirstBaseline = 1<<NSLayoutAttribute::FirstBaseline.0;
146 #[doc(alias = "NSLayoutFormatAlignAllBaseline")]
147 const AlignAllBaseline = NSLayoutFormatOptions::AlignAllLastBaseline.0;
148 #[doc(alias = "NSLayoutFormatAlignmentMask")]
149 const AlignmentMask = 0xFFFF;
150 #[doc(alias = "NSLayoutFormatDirectionLeadingToTrailing")]
151 const DirectionLeadingToTrailing = 0<<16;
152 #[doc(alias = "NSLayoutFormatDirectionLeftToRight")]
153 const DirectionLeftToRight = 1<<16;
154 #[doc(alias = "NSLayoutFormatDirectionRightToLeft")]
155 const DirectionRightToLeft = 2<<16;
156 #[doc(alias = "NSLayoutFormatDirectionMask")]
157 const DirectionMask = 0x3<<16;
158 #[doc(alias = "NSLayoutFormatSpacingEdgeToEdge")]
159 const SpacingEdgeToEdge = 0<<19;
160 #[doc(alias = "NSLayoutFormatSpacingBaselineToBaseline")]
161 const SpacingBaselineToBaseline = 1<<19;
162 #[doc(alias = "NSLayoutFormatSpacingMask")]
163 const SpacingMask = 0x1<<19;
164 }
165}
166
167unsafe impl Encode for NSLayoutFormatOptions {
168 const ENCODING: Encoding = NSUInteger::ENCODING;
169}
170
171unsafe impl RefEncode for NSLayoutFormatOptions {
172 const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
173}
174
175extern_class!(
176 #[unsafe(super(NSObject))]
178 #[thread_kind = MainThreadOnly]
179 #[derive(Debug, PartialEq, Eq, Hash)]
180 pub struct NSLayoutConstraint;
181);
182
183extern_conformance!(
184 unsafe impl NSObjectProtocol for NSLayoutConstraint {}
185);
186
187impl NSLayoutConstraint {
188 extern_methods!(
189 #[unsafe(method(constraintsWithVisualFormat:options:metrics:views:))]
190 #[unsafe(method_family = none)]
191 pub unsafe fn constraintsWithVisualFormat_options_metrics_views(
192 format: &NSString,
193 opts: NSLayoutFormatOptions,
194 metrics: Option<&NSDictionary<NSString, AnyObject>>,
195 views: &NSDictionary<NSString, AnyObject>,
196 mtm: MainThreadMarker,
197 ) -> Retained<NSArray<NSLayoutConstraint>>;
198
199 #[cfg(feature = "objc2-core-foundation")]
200 #[unsafe(method(constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:))]
201 #[unsafe(method_family = none)]
202 pub unsafe fn constraintWithItem_attribute_relatedBy_toItem_attribute_multiplier_constant(
203 view1: &AnyObject,
204 attr1: NSLayoutAttribute,
205 relation: NSLayoutRelation,
206 view2: Option<&AnyObject>,
207 attr2: NSLayoutAttribute,
208 multiplier: CGFloat,
209 c: CGFloat,
210 mtm: MainThreadMarker,
211 ) -> Retained<Self>;
212
213 #[unsafe(method(priority))]
214 #[unsafe(method_family = none)]
215 pub unsafe fn priority(&self) -> UILayoutPriority;
216
217 #[unsafe(method(setPriority:))]
219 #[unsafe(method_family = none)]
220 pub unsafe fn setPriority(&self, priority: UILayoutPriority);
221
222 #[unsafe(method(shouldBeArchived))]
223 #[unsafe(method_family = none)]
224 pub unsafe fn shouldBeArchived(&self) -> bool;
225
226 #[unsafe(method(setShouldBeArchived:))]
228 #[unsafe(method_family = none)]
229 pub unsafe fn setShouldBeArchived(&self, should_be_archived: bool);
230
231 #[unsafe(method(firstItem))]
232 #[unsafe(method_family = none)]
233 pub unsafe fn firstItem(&self) -> Option<Retained<AnyObject>>;
234
235 #[unsafe(method(secondItem))]
236 #[unsafe(method_family = none)]
237 pub unsafe fn secondItem(&self) -> Option<Retained<AnyObject>>;
238
239 #[unsafe(method(firstAttribute))]
240 #[unsafe(method_family = none)]
241 pub unsafe fn firstAttribute(&self) -> NSLayoutAttribute;
242
243 #[unsafe(method(secondAttribute))]
244 #[unsafe(method_family = none)]
245 pub unsafe fn secondAttribute(&self) -> NSLayoutAttribute;
246
247 #[cfg(feature = "NSLayoutAnchor")]
248 #[unsafe(method(firstAnchor))]
249 #[unsafe(method_family = none)]
250 pub unsafe fn firstAnchor(&self) -> Retained<NSLayoutAnchor>;
251
252 #[cfg(feature = "NSLayoutAnchor")]
253 #[unsafe(method(secondAnchor))]
254 #[unsafe(method_family = none)]
255 pub unsafe fn secondAnchor(&self) -> Option<Retained<NSLayoutAnchor>>;
256
257 #[unsafe(method(relation))]
258 #[unsafe(method_family = none)]
259 pub unsafe fn relation(&self) -> NSLayoutRelation;
260
261 #[cfg(feature = "objc2-core-foundation")]
262 #[unsafe(method(multiplier))]
263 #[unsafe(method_family = none)]
264 pub unsafe fn multiplier(&self) -> CGFloat;
265
266 #[cfg(feature = "objc2-core-foundation")]
267 #[unsafe(method(constant))]
268 #[unsafe(method_family = none)]
269 pub unsafe fn constant(&self) -> CGFloat;
270
271 #[cfg(feature = "objc2-core-foundation")]
272 #[unsafe(method(setConstant:))]
274 #[unsafe(method_family = none)]
275 pub unsafe fn setConstant(&self, constant: CGFloat);
276
277 #[unsafe(method(isActive))]
278 #[unsafe(method_family = none)]
279 pub unsafe fn isActive(&self) -> bool;
280
281 #[unsafe(method(setActive:))]
283 #[unsafe(method_family = none)]
284 pub unsafe fn setActive(&self, active: bool);
285
286 #[unsafe(method(activateConstraints:))]
287 #[unsafe(method_family = none)]
288 pub unsafe fn activateConstraints(
289 constraints: &NSArray<NSLayoutConstraint>,
290 mtm: MainThreadMarker,
291 );
292
293 #[unsafe(method(deactivateConstraints:))]
294 #[unsafe(method_family = none)]
295 pub unsafe fn deactivateConstraints(
296 constraints: &NSArray<NSLayoutConstraint>,
297 mtm: MainThreadMarker,
298 );
299 );
300}
301
302impl NSLayoutConstraint {
304 extern_methods!(
305 #[unsafe(method(init))]
306 #[unsafe(method_family = init)]
307 pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
308
309 #[unsafe(method(new))]
310 #[unsafe(method_family = new)]
311 pub unsafe fn new(mtm: MainThreadMarker) -> Retained<Self>;
312 );
313}
314
315impl NSLayoutConstraint {
317 extern_methods!(
318 #[unsafe(method(identifier))]
319 #[unsafe(method_family = none)]
320 pub unsafe fn identifier(&self) -> Option<Retained<NSString>>;
321
322 #[unsafe(method(setIdentifier:))]
324 #[unsafe(method_family = none)]
325 pub unsafe fn setIdentifier(&self, identifier: Option<&NSString>);
326 );
327}
328
329extern_protocol!(
330 pub unsafe trait UILayoutSupport: NSObjectProtocol + MainThreadOnly {
332 #[cfg(feature = "objc2-core-foundation")]
333 #[unsafe(method(length))]
334 #[unsafe(method_family = none)]
335 unsafe fn length(&self) -> CGFloat;
336
337 #[cfg(feature = "NSLayoutAnchor")]
338 #[unsafe(method(topAnchor))]
339 #[unsafe(method_family = none)]
340 unsafe fn topAnchor(&self) -> Retained<NSLayoutYAxisAnchor>;
341
342 #[cfg(feature = "NSLayoutAnchor")]
343 #[unsafe(method(bottomAnchor))]
344 #[unsafe(method_family = none)]
345 unsafe fn bottomAnchor(&self) -> Retained<NSLayoutYAxisAnchor>;
346
347 #[cfg(feature = "NSLayoutAnchor")]
348 #[unsafe(method(heightAnchor))]
349 #[unsafe(method_family = none)]
350 unsafe fn heightAnchor(&self) -> Retained<NSLayoutDimension>;
351 }
352);