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
183unsafe impl NSObjectProtocol for NSLayoutConstraint {}
184
185impl NSLayoutConstraint {
186 extern_methods!(
187 #[unsafe(method(constraintsWithVisualFormat:options:metrics:views:))]
188 #[unsafe(method_family = none)]
189 pub unsafe fn constraintsWithVisualFormat_options_metrics_views(
190 format: &NSString,
191 opts: NSLayoutFormatOptions,
192 metrics: Option<&NSDictionary<NSString, AnyObject>>,
193 views: &NSDictionary<NSString, AnyObject>,
194 mtm: MainThreadMarker,
195 ) -> Retained<NSArray<NSLayoutConstraint>>;
196
197 #[cfg(feature = "objc2-core-foundation")]
198 #[unsafe(method(constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:))]
199 #[unsafe(method_family = none)]
200 pub unsafe fn constraintWithItem_attribute_relatedBy_toItem_attribute_multiplier_constant(
201 view1: &AnyObject,
202 attr1: NSLayoutAttribute,
203 relation: NSLayoutRelation,
204 view2: Option<&AnyObject>,
205 attr2: NSLayoutAttribute,
206 multiplier: CGFloat,
207 c: CGFloat,
208 mtm: MainThreadMarker,
209 ) -> Retained<Self>;
210
211 #[unsafe(method(priority))]
212 #[unsafe(method_family = none)]
213 pub unsafe fn priority(&self) -> UILayoutPriority;
214
215 #[unsafe(method(setPriority:))]
217 #[unsafe(method_family = none)]
218 pub unsafe fn setPriority(&self, priority: UILayoutPriority);
219
220 #[unsafe(method(shouldBeArchived))]
221 #[unsafe(method_family = none)]
222 pub unsafe fn shouldBeArchived(&self) -> bool;
223
224 #[unsafe(method(setShouldBeArchived:))]
226 #[unsafe(method_family = none)]
227 pub unsafe fn setShouldBeArchived(&self, should_be_archived: bool);
228
229 #[unsafe(method(firstItem))]
230 #[unsafe(method_family = none)]
231 pub unsafe fn firstItem(&self) -> Option<Retained<AnyObject>>;
232
233 #[unsafe(method(secondItem))]
234 #[unsafe(method_family = none)]
235 pub unsafe fn secondItem(&self) -> Option<Retained<AnyObject>>;
236
237 #[unsafe(method(firstAttribute))]
238 #[unsafe(method_family = none)]
239 pub unsafe fn firstAttribute(&self) -> NSLayoutAttribute;
240
241 #[unsafe(method(secondAttribute))]
242 #[unsafe(method_family = none)]
243 pub unsafe fn secondAttribute(&self) -> NSLayoutAttribute;
244
245 #[cfg(feature = "NSLayoutAnchor")]
246 #[unsafe(method(firstAnchor))]
247 #[unsafe(method_family = none)]
248 pub unsafe fn firstAnchor(&self) -> Retained<NSLayoutAnchor>;
249
250 #[cfg(feature = "NSLayoutAnchor")]
251 #[unsafe(method(secondAnchor))]
252 #[unsafe(method_family = none)]
253 pub unsafe fn secondAnchor(&self) -> Option<Retained<NSLayoutAnchor>>;
254
255 #[unsafe(method(relation))]
256 #[unsafe(method_family = none)]
257 pub unsafe fn relation(&self) -> NSLayoutRelation;
258
259 #[cfg(feature = "objc2-core-foundation")]
260 #[unsafe(method(multiplier))]
261 #[unsafe(method_family = none)]
262 pub unsafe fn multiplier(&self) -> CGFloat;
263
264 #[cfg(feature = "objc2-core-foundation")]
265 #[unsafe(method(constant))]
266 #[unsafe(method_family = none)]
267 pub unsafe fn constant(&self) -> CGFloat;
268
269 #[cfg(feature = "objc2-core-foundation")]
270 #[unsafe(method(setConstant:))]
272 #[unsafe(method_family = none)]
273 pub unsafe fn setConstant(&self, constant: CGFloat);
274
275 #[unsafe(method(isActive))]
276 #[unsafe(method_family = none)]
277 pub unsafe fn isActive(&self) -> bool;
278
279 #[unsafe(method(setActive:))]
281 #[unsafe(method_family = none)]
282 pub unsafe fn setActive(&self, active: bool);
283
284 #[unsafe(method(activateConstraints:))]
285 #[unsafe(method_family = none)]
286 pub unsafe fn activateConstraints(
287 constraints: &NSArray<NSLayoutConstraint>,
288 mtm: MainThreadMarker,
289 );
290
291 #[unsafe(method(deactivateConstraints:))]
292 #[unsafe(method_family = none)]
293 pub unsafe fn deactivateConstraints(
294 constraints: &NSArray<NSLayoutConstraint>,
295 mtm: MainThreadMarker,
296 );
297 );
298}
299
300impl NSLayoutConstraint {
302 extern_methods!(
303 #[unsafe(method(init))]
304 #[unsafe(method_family = init)]
305 pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
306
307 #[unsafe(method(new))]
308 #[unsafe(method_family = new)]
309 pub unsafe fn new(mtm: MainThreadMarker) -> Retained<Self>;
310 );
311}
312
313impl NSLayoutConstraint {
315 extern_methods!(
316 #[unsafe(method(identifier))]
317 #[unsafe(method_family = none)]
318 pub unsafe fn identifier(&self) -> Option<Retained<NSString>>;
319
320 #[unsafe(method(setIdentifier:))]
322 #[unsafe(method_family = none)]
323 pub unsafe fn setIdentifier(&self, identifier: Option<&NSString>);
324 );
325}
326
327extern_protocol!(
328 pub unsafe trait UILayoutSupport: NSObjectProtocol + MainThreadOnly {
330 #[cfg(feature = "objc2-core-foundation")]
331 #[unsafe(method(length))]
332 #[unsafe(method_family = none)]
333 unsafe fn length(&self) -> CGFloat;
334
335 #[cfg(feature = "NSLayoutAnchor")]
336 #[unsafe(method(topAnchor))]
337 #[unsafe(method_family = none)]
338 unsafe fn topAnchor(&self) -> Retained<NSLayoutYAxisAnchor>;
339
340 #[cfg(feature = "NSLayoutAnchor")]
341 #[unsafe(method(bottomAnchor))]
342 #[unsafe(method_family = none)]
343 unsafe fn bottomAnchor(&self) -> Retained<NSLayoutYAxisAnchor>;
344
345 #[cfg(feature = "NSLayoutAnchor")]
346 #[unsafe(method(heightAnchor))]
347 #[unsafe(method_family = none)]
348 unsafe fn heightAnchor(&self) -> Retained<NSLayoutDimension>;
349 }
350);