ChatGPT解决这个技术问题 Extra ChatGPT

iOS 7: Misplaced View Frame for "Label - Label" will be different at run time

I just finished an app on iOS 6 and bought a developer account a week ago so haven't had much time playing with the iOS 7 SDK. Just downloaded the Golden Master version and trying to upgrade my app to be compatible with iOS 7.

I received a lot of warnings saying

Misplaced View Frame for "Label - Label" will be different at run time.

and I am unable to run the program. The project contains tableview and its is parsing and displaying XML feed from an RSS.

How to fix this issue?

Xcode 5 and iOS 7 are still under NDA, you may not get any response to your question because of this.
@rckoenes Thanks. Shall i ask this question in Apple developer forum?
that would be the correct place.
Are you using autolayout with constrains?
@null yes i am using Autolayout. Not sure what do you mean by constrains. There were autolayout errors earlier but i changed the deployment target from iOS 5 to iOS 6 and those errors were gone. But these warnings are still there. I want it to work on both iOS 6 and iOS 7.

E
Enrico Susatyo

The accepted answer will fix the problem, but that's not a good solution because it'll remove all your constraints. If you have spent hours on the constraints then don't do that.

If you click the triangle next to the warning you can get the explanation of what is misplaced. Then you can just move the frame to where it's supposed to be. For example:

https://i.stack.imgur.com/L7SHz.png

In this case I just moved my Text View's y position to 94 and the warning will go away. This is because one of my constraints will force the view to be somewhere else when the app is running, but the position is different than where it currently is in the storyboard.

Another way to move the frame to the right position is to click on the warning next to the View Controller name in your storyboard, and then click on the yellow warning sign, and click update frame.

https://i.stack.imgur.com/eTZdU.png

https://i.stack.imgur.com/jBrqo.png

These two methods are not destructive and will not remove your constraints. If anything it'll show that you may need to do minor readjustments in your constraints.


What if I want to use the size in the canvas and not what will be at run time? What will I do?
@GelFermis In general you'd have to rework your constraints, but try pressing "Update Constraints" first and it will try to do that for you.
@EnricoSusatyo I tried pressing "Update Constraints" and then "Fix Misplacement" but the warning is still there. Does that mean I'll have to rework my constraints?
it happens the same to me as for Gel Fermis.. I need to update frames every time I open the storyboard. is there any solution? This is the right solution, but doesn't fix my problem, since I need to update frames every-time I load the storyboard. Any solution? Thanks
T
Tarek Hallak

I had the same issue and I get below response form Apple:

You need to update the constraints to match the frames of these views.

I did the following:

Editor -> Resolve Auto-Layout Issues -> Clear all constraints in ** view controller

then I reordered my objects again in the view.

PS: Try Enrico's solution first.


Thanks it worked for me. Although i have to select the custom tableview cell and then using the "Clear all constraints" option.
This will clear your constraints! See Enrico's answert.
So if I added autoLayout to some views, and changed the frame accidentally or set just one view not correctly, you are saying that I need to clear the constraints, and leaving the views on static positions? What about the other views constraints, set up from the beginning? See @Enrico's Answer.
@eridb what Static position ??!!! dah! who said that?? I've just reordered my constrains again.
Yes I know that, but I wanted to tell you to update the answer, and tell other opportunities in order not to get dummy downvotes. I am not downvoting you because you know how this is done, just I am asking to make this question more valuable. P.S Judging by your name I am not sure you got the message, you have no address :P
S
Sanoj Kashyap

https://i.stack.imgur.com/m8JGt.png

Please see the meaning:-

https://i.stack.imgur.com/dsbpz.png

You can either choose "Update Frames" or "Update Constraints" and Use "Reset to Suggested Constraints". This will resolve the issue regarding misplaced View. Don’t drag and drop views to make adjustments to layout. Edit the applicable constraints instead. Please , let me know if you not clear.


s
sivi

If you are having troubles finding the Update Frames in xCode it can be done like so:

https://i.stack.imgur.com/vK6Fv.png


c
clearlight

None of the answers work in all cases. As of recent version of Xcode, using a UISearchBar, enabling scoping field enabled in IB makes the search field appear double height (but doesn't show a the scoping bar beneath it). Whether or not you add a height constraint (of any height) to the search field, you'll get the warning that it is a misplaced view that will be 88 H at runtime but is 44 H in IB. Updating the frames (any or all frames) doesn't resolve it. Seems like a bug in IB.


note: besides the annoying IB warning, the code runs fine and does the right thing (including showing the scoping bar)
Yeah I keep updating the frame and it just moves one pixel up. The warnings are still there. Update Frame again, it moves down 1 pixel. This just goes on forever... When the code runs, its fine.