How do I reset specific size class data on a story

2020-07-06 08:28发布

问题:

I am using size classes to create a storyboard that can target all the various screen sizes and orientations. I have been working in the Any Width-Any Height size class. I ran into a display issue and decided to make those changes in the Compact Width - Regular Height size class. At a Later time, I was able to resolve my layout issue by making constraint changes to the Any Width-Any Height size class. How can I revert the changes made to the Compact Width - Regular Height size class so that the Any Width-Any Height size class will be used at runtime without manually reverting the changes?

回答1:

I had a similar problem where I edited a few constraints for the iPad in the wrong size class (Any Width - Regular Height instead of Regular Width - Regular Height) and it ended up messing up the layout for portrait iPhone. I ended up editing Base.lproj/Main.storyboard and changed the appropriate <variation> entries to move the constraints to the proper size class (in my case, from <variation key="heightClass=regular" ..> to <variation key="heightClass=regular-widthClass=regular ...>. There must be a better way to do this, but this quick hack solved my problem in that occasion. To remove variations, deleting the corresponding variation entries should work (but make sure you have a backup in case something goes wrong).



回答2:

XCODE7...

I had a similar problem with images added while in Regular Width (rather than "Any") not appearing when I switched it back to "wAny hAny" size.

I found in the Main.storyboard file, when viewed as code rather than visually, a section for the view in question as follows:

                        <variation key="default">
                        <mask key="subviews">
                            <exclude reference="bQ8-Fl-U5l"/>
                            <exclude reference="eyq-ch-Aan"/>
                            <exclude reference="pm5-gT-AYv"/>
                            <exclude reference="LJc-xi-hYb"/>
                            <exclude reference="y0y-l5-aTs"/>
                            <exclude reference="cLR-e1-OJo"/>
                        </mask>
                        <mask key="constraints">
                        </mask>
                    </variation>
                    <variation key="widthClass=regular">
                        <mask key="subviews">
                            <include reference="bQ8-Fl-U5l"/>
                            <include reference="eyq-ch-Aan"/>
                            <include reference="pm5-gT-AYv"/>
                            <include reference="LJc-xi-hYb"/>
                            <include reference="y0y-l5-aTs"/>
                            <include reference="cLR-e1-OJo"/>
                        </mask>

It appears that the section refers to the "Any-Any" case, and the refers to the specific Size Class I was playing with (being Regular Width, Any Height).

To fix it I DELETED the items EXCLUDED from the default section, and DELETED this same entries that had been added to the regular section. That section of the code then looks like...

                     <variation key="default">
                        <mask key="subviews">

                        </mask>
                        <mask key="constraints">
                        </mask>
                    </variation>
                    <variation key="widthClass=regular">
                        <mask key="subviews">

                        </mask>

Seems to fix it. Whacky, eh?