I know we can use \"Shift + Alt + Cmd + Left\" to fold/collapse swift code in Xcode, but can anyone tell me how to fold/collapse for functions only?
It is a great feature to have. It seems too few developers know about this. Especially when writing code in SwiftUI, I like to see that my code works before refactoring it into separate views.
Folding is a great tool to have.
Here an example in Xcode 12. It is not active by default but you need too check the box "Code Folding Ribbon" in the preferences:
and you can fold nested views as deep as you like, with animation:
you can always go to Symbol Navigator
, cmd+2
and enjoy list of all your declarations that swift has organized.
However, if this doesn't satisfy you, and you require to have better control over your functions I recommend you to use function protocols
, they work somewhat similar to header files in C
. you can find out more about function prototypes in(https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Protocols.html#//apple_ref/doc/uid/TP40014097-CH25-ID267)
Another way to do this would be as below.
Now when you look at your code you should be able to see this :
When you bring your mouse over the folding ribbon you should see a small arrow that can be used to fold code blocks (functions, if-else, loops, etc)
Hope this helps!
As of now there is no option to fold only functions in you class, we may expect these features in future release of Xcode
. To fold specific function you can use alt + command + left_arrow
after placing the cursor in function starting line. Use alt + command + right_arrow
for unfold folded function.
Updates in Xcode 10:
Xcode 10 has increased support for code folding, including:
Menubar ► Editor ► Code Folding ► Fold menu item
Look at this snapshot:
Code folding was disabled in Xcode 9 beta 1, which is working now, in Xcode 9 Beta5 according to beta release note: Resolved in Xcode 9 beta 5 – IDE
Here is how:
⌘
(command) button in keyboard and move/hover mouse cursor on any (start or end) braces. It will automatically highlight, block area.⌘
(command) button in pressed condition and click on highlighted area. It will enable quick menu popover window with Fold
option.Fold
from menu list. It will fold your code and shows 3 dots, folding/covering entire block.⌘
(command) button and click on 3 dots folding a block.For easy understanding, look at this snapshot:
It's all keyboard short cuts are also working.
Fold ⌥ ⌘ ← option + command + left arrow
Unfold ⌥ ⌘ → option + command + right arrow
Unfold All ⌥ U option + U
Fold Methods & Functions ⌥ ⌘ ↑ option + command + up arrow
Unfold Methods & Functions ⌥ ⌘ ↓ option + command + down arrow
Fold Comment Blocks ⌃ ⇧ ⌘ ↑ control + shift + command + up
Unfold Comment Blocks ⌃ ⇧ ⌘ ↓ control + shift + command + down
Focus Follows Selection ⌃ ⌥ ⌘ F control + option + command + F
Fold All ⌘ ⌥ ⇧ ← command + option + shift + left
Unfold All ⌘ ⌥ ⇧ → command + option + shift + left
Code folding options from Xcode Menu:
Menubar ► Editor ► Code Folding ► "Here is list of code folding options"
Here is ref snapshot:
Same options from Xcode Short-cut list:
Menubar ► Xcode ► Preferences ► Key Bindings ► "Here is list of code folding short-keys"