Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Xcode 11 add new constraints set zero: use set value instead of default / standard

I used to use autolayout add new constraints to make simple constraints to superview / relative view like this (for loooong time):

enter image description here

However, recently after updated to the latest xcode (11.3.3 or just 11.3/11C29), I have this weird issue: when I set the constant = 0, they always generate the constraints in an unwanted way like this:

enter image description here

And it seems default value is somehow 20 and making my view look so wrong (0 compared to 20?)

If I fix that by edit the constraint like this:

enter image description here

Then it'll correct again (the image is after edited the constraints, before edited it display constant = Standard)

I don't even know how to describe the issue, but how do I fix this new add new constraint to use my desire point instead of standard / default?

Update:

It seems to only happened when constraint to superview. No clue how to fix tho.

Update Apr-01-2020:

Xcode11.4 fixed this.

like image 208
Eddie Avatar asked Dec 20 '19 12:12

Eddie


People also ask

How do I add constraints in Xcode?

To create constraints select the button and click the Align icon in the auto layout menu. A popover menu will appear, check both “Horizontal in container” and “Vertically in container” options to center the button on the screen. Then click the “Add 2 Constraints” button. Run the application.

How to set all four constraints in Xcode label element?

First of all click on Label element and click on little button at the bottom of Xcode window and set all four constraints by clicking on red dotted lines in scheme (look at screenshot below):

How to edit/remove constraints in Xcode project?

If you want to remove one constraint, just select it and press delete key in keyboard. If you want to edit one constraint value, just select it, and then edit it in Attributes Inspector pane ( How To Display Xcode Library, Assistant Editor, Inspectors Window ) at Xcode project right side.

What's new in Xcode 11?

There’s a lot more! Xcode 11 brings two different ways of building the user interface (UI) for your app: Storyboards or SwiftUI. When you create a new Xcode project, you’ll see a dropdown to choose one of these two options: Storyboards are interfaces built with visual drag and drop in the Editor Area using Interface Builder.

Does adding a constraint change the default value of a column?

Just adding the default constraint to an existing column doesn't change the null values to the default. WITH VALUES only works when you are also adding the column at the same time.


Video Answer


5 Answers

Seems like a bug (don't forget to file with Apple). Here's a simple workaround:

When you fill in the number in the "popover", instead of typing 0, type 0.01. This will prevent the number from changing mysteriously to "Standard". Okay, so 0.01 is not the same as 0 but it's close enough that you can't tell the difference, and at least you don't have to go back and change it later.

EDIT Apple says that this bug will be fixed in Xcode 11.4:

Fixed a bug that prevented entering a 0 constant in the constraint popup editors. (54076090)

like image 154
matt Avatar answered Oct 21 '22 10:10

matt


While @matt workaround is working, I just want to add on that you can set it to 0.01 and then change it to 0, it won't change to the standard value again. Note: Xcode 11.3

like image 25
chhay sotheara Avatar answered Oct 21 '22 09:10

chhay sotheara


As of Xcode 11.3.1:

The neatest and fastest solution I've found is as follows:

Simply type in -0 into the constraint field. Xcode appears to discard the negative and it behaves correctly, which is better than it reading 0.01 for everything.

You can insert all constraints at once, without having to do one at a time or go and edit later.

Xcode displays the values as this

It does seem like really dumb behaviour. Is there a reason that Apple might have made it do this deliberately...?

Edit: This doesn't seem to work every time, which is frustrating. I've just had a UIImageView show 0 to Superview, yet still visually be at the default value (20). This really does seem like a bug with the IB as the behaviour is totally illogical.

Edit 2: Seems to be fixed now - phew!

like image 29
Dave Y Avatar answered Oct 21 '22 10:10

Dave Y


This behavior seems to be fixed on Xcode 11.4: release notes

Fixed a bug that prevented entering a 0 constant in the constraint popup editors. (54076090)


Original Answer:

I just found this behavior too, I tried adding the constraints 1 by 1 and Xcode actually respected the 0 value.

My two cents.

like image 32
dequin Avatar answered Oct 21 '22 11:10

dequin


I know that this is no solution, but for temporary solution to prevent you to go through every constraint, I just found out that you get the desired behaviour if you insert '-0' instead of '0', but you have to insert one constraint each time.

like image 41
Gonçalo Gaspar Avatar answered Oct 21 '22 11:10

Gonçalo Gaspar