After upgrading to Xcode 6.3 (release version), Xcode now freeze every time I open a XIB/Storyboard file that includes an IB_DESIGNABLE view that uses a custom font for any projects and includes a custom font (not necessarily to have reference to that font in that XIB/Storyboard). The freeze occurs after opening the .xib file and then attempting to switch to any other file. Xcode hangs and must be force quit.
I have opened a bug report with Apple. (Bug 20483867).
Right now, I have two work arounds.
Download and use Xcode 6.2 from Apple.
Remove the IB_DESIGNABLE tags from the custom view header files.
This is likely an Apple bug, but does anyone have a better work around or solution?
I've already suggested an edit for a more accurate description.
It only happens when your project contains a custom font.
It'll freeze just by visiting any Storyboard/XIB that contains an IBDesignable custom view, not even referencing to that font in your Storyboard/XIB.
My workaround is to use have an older version of Xcode also installed (Xcode 6.3 beta or Xcode 6.2) and use that to update your Interface Builder files, and never open it in 6.3. open those Storyboard/XIB in a new window in Xcode with option+shift+click the file in the project tree.
Whenever you encounter the freeze, I use this command to clear the saved state just for that project.
rm -rf YourProject.xcodeproj/project.xcworkspace/xcuserdata
Xcode 6.3.1 fixes the problem with custom fonts and IB_DESIGNABLE views in a Storyboard. Update via the Mac App Store, and you should be good.
Response from Apple: Link to Developer Forums on Apple
Thank you all for your reports. We are tracking this on our end and working hard to resolve it. Unfortunately we don't have a great workaround, but here are two options to get you going:
If Xcode is hanging on launch because a storyboard/XIB using a custom font/IBDesignable was previously open: remove the "UserInterfaceState.xcuserstate" file inside the xcodeproj of the project you are opening, it would be at a path like this: My App.xcodeproj/project.xcworkspace/xcuserdata/yourusername.xcuserdatad/UserInterfaceState.xcuserstate
If you really need to edit the storyboard/XIB file containing the custom font with Xcode 6.3:
Make a copy of your storyboard/XIB file as a backup
Open the storyboard/XIB file in a text editor
Remove XML tags named "fontDescription" that reference your custom font, for example: . Removing this tag will revert the font to the standard system font.
Make outlets to the objects using the custom font and at runtime set the font of those objects to your custom font, for example in an override of viewDidLoad or awakeFromNib on your view controller
IMPORTANT NOTE: we never recommend hand editing storyboard/XIB files. However we recognize this issue is preventing many of you from editing your documents and wanted to provide a workaround with the caveat that any hand editing may result in corruption of your document.
Same problem for me. Removing IB_DESIGNABLE fixes the problem.. Going back to 6.2 doesn't work for me as I'm testing apps on device with iOS 8.3 - Xcode 6.2 can't run apps on devices with iOS 8.3 :(
Another workaround is to change the file extensions to all of your font files and load the changed file names from Info.plist.
This way you can keep IBDesignables and still use your custom fonts, but wont be able to see them in the Font Picker in Interface Builder.
All custom fonts that were peviously set from Interface Builder will continue to work, but in order to change them or to set another custom fonts, you will have to do it either from code or to modify the Storyboard or Nib files from text editor in order to set the font name.
I don't have an answer but found out that simply force-quitting and restarting will re-launch Xcode in the exact same situation. To just be able to restart Xcode, remove the folder ~/Library/Saved Application State/com.apple.dt.Xcode.savedState.
This bug has been fixed in the 6.4 Xcode beta that came out today. Go to the dev center and log in to download it.
Xcode 8.1 - if you have a view with Navigation (in my case it was top Bar opaque Navigation Bar), just try to set property "top Bar" to None.
As a workaround,I just commented out all the #IBDesignable markup in my handful of custom components that use this. When I did that, yes I lose ability to tweak the settings in Interface Builder, but it allowed me to at least open the .xib files w/out XCode crashing.
I will simply un-comment those #IBDesignable lines when Apple comes up w/ a fix.
#O. Kurnenkov's answer worked for me. It didn't have anything to do with IB_Designable nor custom fonts, Cocoapods, etc.
For some reason having an "Opaque Navigation Bar" causes the nib file (it doesn't seem to affect storyboards) to constantly change y position; this can be seen in the Size Inspector where the y position will flicker between 0 and 64. This is happening to me with Xcode 8.2 (8C38).
My guess here is that this causes Xcode to constantly update the layout thus draining resources and causing it to hang/freeze.
The solution is to use any of the "Translucent" options, Inferred, or None.
Hope this helps!
Related
Here is a before and after of one of my screens after I upgraded to Xcode 8.All I did was open up my main.storyboard and from there, I built and ran my app on my phone.In my version control, I can see Xcode is doing a lot of changes to my main.storyboard just from me opening it. Whenever I delete those changes, I can see what I use to see in Xcode 7.3.1.But, as soon as I re-open interface builder with my storyboard, I see those changes come back into place. Is there something I can do here?
Before Xcode 8
After update to Xcode 8
I had a similar problem with tableview images not appearing once I converted the storyboard file to be Xcode8 compatible. This looks like a bug with Xcode8, so until a bug fix is released, here is a work around:
Open your storyboard in Xcode 8 and choose an initial device view. Make changes as you normally would.
Once you have completed your changes, select the storyboard -> File Inspector -> Opens in -> Select 'Xcode 7.x'.
Select 'Save and Close' when prompted
Your storyboard changes will be saved, and your storyboard will function as it did pre-Xcode8.
When you need to make other changes to the storyboard file, follow these steps again.
XIB or Storyboard set default as older version 7.x and Save and Close. Temporary solution, but works. Don't open again once you have done Save and Close. Otherwise again need follow same steps from begin.
Eh the same problem. I partially managed to fix it in the following way (for Xcode Version 8.1 (8B62))
In the document outline of Storyboard, I clicked on each scene which had the yellow arrow indicating some layout issues (Number 1 on the screenshot)
After this, for each problematic scene, I had to click on "Update Frames" small icon (Number 2 on the screenshot) which fixed all the layout issues per scene.
However one scene in my case was still in crying state after transition from Xcode7 to Xcode8. I had to fix it manually by adjusting constraints or adding missing constraints.
Phew, not nice surprise of XCode8 and Storyboards. If you used AppCode editor, you won't have such problem, since it doesn't support Storyboards ;P
Good luck!
Xcode 8.1 Beta 2 resolves this issue. Please check this download link
https://developer.apple.com/download/
Please follow the threads for any possible solution:(I believe it happens to many developers).
Xcode 8 GM seed Storyboard issue
Xcode 8 - Previous storyboards getting distorted
(I used anyH anyW width 600) When Xcode updated to Xcode 8 it changed all my ViewControllers size. As a result all the layout was distorted.
Currently I see only 3 solution for the issue (I wouldn't trust on waiting for fix soon).
1.Go for each Viewcontroller and fix it it by Update Frames.
2.Go to the main ViewController Size Inspector -> Freeform -> 600 as most of the controllers are inferred it will change the size for
all of them.(Be careful on the impact of new Features Apple my want
to introduce).
3.Discard the changes in git for the storyboard (I would't suggest it because Apple also inserted some updates which may be important to
Xcode).
Additional link for the new AutoLayout features in Xcode 8 (WWDC16):
Making Apps Adaptive, Part 1
In my case works solutions suggested by Akhil Kateja and I also need to reset Width and Height of the main view:
1) Set View Size to Free Form
2) Reset Width and Height of the view to the original size:
Finally save and you are done.
For me the solution was simply to click on the UIViewController having issues and then Editor > Resolve Auto Layout Issues > All Views In ... > Updates Frames
It re-arranged the views to fit the existing constraints based on the newly selected default view (iPhone 7 in my case).
Also note: if you get a Navigation Bar Misplaced View warning like I did, simply select the UINavigationController/UIViewController and then Attributes Inspector > Bar Visibility > Shows Navigation Bar - toggle it OFF and then ON again.
Setting View Size to Freeform from Inferred worked for me. It can be found under the heading Simulated Metrics in Attributes Inspector.
I had the same problem and I've solved it by force update the controller's view constraints. Put the following code in your viewDidLoad() function
self.view.layoutIfNeeded()
I selected each controller and clicked on "Update Frames" and it fixed the layout.
The answer from #david-truong (https://stackoverflow.com/a/39589860/1407528) is not working in my case, so if you are in my same situation, try this:
Download the previous Xcode 7.3.1 from here: https://developer.apple.com/download/more/
Undo all your changes (if you have a code manager like git. If you don't, you should 'https://githowto.com/')
Open the project with Xcode 7.3.1.
In the case you have all your devices updated to iOS 10+, this version of Xcode will not recognize those devices as compatible devices. So, try with this trick:
Go to: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport
Copy the folders related with iOS 10 or 10.1 to: /Applications/Xcode 7.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport
Open the project with Xcode 7.3.1 (restart Xcode if you have it already opened)
Select your connected iOS 10+ device
Push Run
Note: New features like Swift will not be available using this trick, but you should be able to load and build your project.
Hope this will help
When i updated Xcode from 7.3 to Xcode 8 and run the app, some of the views are perfectly displayed but some are distorted.Then, i checked the nib file and it prompted me to choose particular device size and then show the nib according to that device size which is offcourse not Any-Any(Xcode 7.3). So all the nibs file are not displaying in a correct way.
Solution work form me :- press the yellow arrow like showing in image below
it will prompt a pop up which show options like
choose Update Frames with Apply to all views in container checked.it will solved around 90% of distorted UI and rest of the auto-layout constraints problem can be solved manually.
I fixed the issue using the Xcode Version 7.3.1 you can download the .dmg file from apple developer portal. I used the Autoresizing in every app and it works great for me.
i will update to Xcode 8 only if they can fix this bug.
Download it here: https://developer.apple.com/services-account/download?path=/Developer_Tools/Xcode_7.3.1/Xcode_7.3.1.dmg
To fix a similar problem, I configured the xib as Freeform (not Inferred) AND saved xib file as Xcode 7.x compatible. Both steps were required in my case. I hope that helps!
I notice one new button in Xcode 8.2, (check the orange circle in the image). It will give you some help.
Steps:
1. Open the storyboard and select any device you want
2. Just select the View Controller
3. Click the mentioned button (as in Image)
4. It will updates the frame for that view controller and you can proceed with it
I didn't found any better solution than this. Please reply if found one.
update constraints and layout subviews in viewdidload solves the problem
- (void) viewDidLoad {
[self.view updateConstraints];
[self.view layoutSubviews];
[super viewDidLoad];
}
I have downloaded Open Sans font and added all the .tff files into my Xcode project, and have checked the checkbox in "Target Membership" pane for each file. I have added the UIAppFonts key and values in Info.plist, and I am sure that the values are typo-free. Plus, the .tff files are added to "Copy Bundle Resources", and the custom font is showing up in Interface Builder. And then I changed the font of all the labels to Open Sans in the Interface Builder (no code).
But when I run the app in the simulator, all the labels and buttons are showing the system font in ultra small sizes, like this:
One thing to note is that I am using Xcode 7 beta 5, and the app's Base SDK is iOS 9.
But why is there this problem? Is it a bug? Thanks!
Check That fonts inside the proyect are part of the target.
Select fonts, verify the property Target Membership for your app is checked at the right in File Inspector.
That solved the problem for me:
Blip, here's a photo of what I did in an empty "Single View" project. And, I could see the font on sim and IB editor. Anything look different for your project? Maybe recreate the basics in a new project, just to double check? All of my notes on the image were associated with my original thoughts...just use them for reference as you double check things.
I recently encountered this problem too. But it only happened for one font-style of a font-family, the others worked fine.
I could only solve it by using this font in a button, then the font was also available for other controls such as labels or the large title.
I installed Xcode 6.3 which includes support for Swift 1.2. It turned up a ton of error messages, which are mostly casting issues.
I navigated to the storyboard, and cannot go back to any other .swift without the whole thing crashing. I have force quit, restarted, and even re-installed, and I still can't navigate away from the Main.storyboard file.
I have tried the suggestion described here to open storyboard as code, make some changes, revert those changes, save and try again, and still no luck.
Is something in my code breaking Xcode? Is anyone else experiencing this? I had used Xcode 6.3 beta successfully with the same codebase.
Update:
This has now been fixed in Xcode 6.3.1 released on the 21st of April 2015.
I gather from the apple developer forums that this is an #IBDesignable issue. Especially in projects that use custom fonts, additional xibs, etc.
I have somehow fixed my issue by removing all #IBDesignable from swift UIView class definitions. You can open your project directory with TextMate or other, search and remove all "#IBDesignable"
However I still think this is a MAJOR bug, that needs to be worked on.. so keep filing bug reports to Apple.
A temporary solution:
By opening a "New Window" (same project).
One for the code, one for the storyboard or reduce first, work freely with second window.
You can keep your #IBDesignables
EDIT : Bug fixed -> Update Xcode 6.3.1
Launching Xcode while holding shift fixed it for me.
(This suppresses Xcode's state restoration.)
Update: Xcode 6.3.1, released today, resolves this issue.
Update
Xcode 6.3.1
For me, everything works !
Temporary solution:
If you have currently opened Assistant Editor switch to another file using alt+click. You can keep your #IBDesignables.
Here's how I get around this strange bug:
Before launching Xcode, rename the storyboard file in finder so that Xcode won't find it (e.g. add the extension .temp)
Launch Xcode - works fine even if it hanged before since it cannot display the storyboard editor
Open a new window in Xcode
Rename the storyboard file to its original name
In the new window in Xcode - select the storyboard - Xcode does not hang
Minimize the new window and work as usual in the original window. Now you can select any file - even the storyboard - without Xcode hanging
One problem remains, though, at least for me. Every time I select a file or edit something, Xcode needs to recompile the storyboard. Haven't solved that one yet.
I can confirm this bug. I was stuck in storyboard and could do nothing to get out of it (couldn't even open the assistant). As a workaround, with the storyboard open, right-click the .storyboard file and select Open As - Source Code. This will switch your storyboard to code and you will be able to then switch to any file.
It is not a bug anymore since Apple fixed it in Xcode 6.3.1.
"I have my custom fonts working fine when they are running on the simulator, but is there any way to view custom fonts in the storyboard itself while I'm working? My text doesn't match the size of the default font so I have to keep compiling and running the code and eyeing the correct size by trial and error over and over.
I've seen a few questions hit on this, but it's just bringing up how to upload custom fonts."
I have copied paste this question from Viewing Custom Text in Xcode Storyboard since it describes exactly what I am having trouble with but he had XCode 4 and I have the 5th version. Is there any solution for the XCode 5?
Unfortunately this is a well established bug. Custom fonts do not appear correctly in Interface Builder. You should file an enhancement request with Apple. Until they fix it, you'll just have to live with it.
Every time I try to open storyboards and xib files in new xCode 6 or 6.1 and on Yosemite. This happens while my colleague can open it in xCode 6 on Maverick. I repeatedly get following error:
The document "MainStoryboard.storyboard" could not be opened. The operation couldn’t be completed. (com.apple.InterfaceBuilder error -1.)
I still can open it on xCode 5 on Yosemite. I also tried this method:
Open xib file in an text editor and remove all ImageViews' property of ImageName which has .png format; It helped to open some of it but not All of them!
It is a very bad situation and I am stuck!
This information are provided by console:
Exception raised while unarchiving document objects - -[NSTaggedPointerString getCharacters:range:]: Range {0, 10} out of bounds; string length 4
What is the problem and how can I solve it?
Well the problem was with name of some images I used in UIImageViews.
I opened xib files in a text editor and find all of these patterns "X/Y.png".
And I replaced it with "Y.png".
That solved my problem!
Back the project up before you do this but:
Drop to terminal
Confirm that Developer Tools are set up correctly by typing xcode-select -p
(it should be /Applications/Xcode.app/Contents/Developer)
If it isn't then, it should be pointing to wherever your Xcode lives i.e. /Applications/MyDeveloperTools/Xcode.app/Contacts/Developer
You can change it by running:
xcode-select -s /path/to/the/folder/where/xcode/is/Xcode.app/Contents/Developer
If that's all fine then.
Drop to terminal (or stay there if you're still there
Navigate to your project folder (where the Xibs are) n.b. its important that the above steps are right too!
run ibtool --upgrade myNonWorkingXibOnXode6.xib
From here on in, that Xib should work fine.
Another note is that "compiled nibs won't work via that any more"
Had some similar error when opening a storyboard in Xcode 6 for the first time.
One solution, for me was to open the storyboard with your text editor of choice and manually set auto layout to false: useAutolayout="NO". Problem with this approach is that you'll loose all of your layout constraints.
Another option that worked even better for me, was to install/use Xcode 5.1, open the storyboard and, in File Inspector in section Interface Builder Document, update Opens in option to use Default (5.1), then open the storyboard again in Xcode 6.