Fish Shell

Installing Fish:

brew install fish

Displaying the branch name in the prompt:

Place the following script here: ~/.config/fish/

set fish_git_dirty_color red
set fish_git_not_dirty_color green

function parse_git_branch
  set -l branch (git branch 2> /dev/null | grep -e '\* ' | sed 's/^..\(.*\)/\1/')
  set -l git_diff (git diff)

  if test -n "$git_diff"
    echo (set_color $fish_git_dirty_color)$branch(set_color normal)
    echo (set_color $fish_git_not_dirty_color)$branch(set_color normal)

function fish_prompt
  if test -d .git
    printf '%s@%s %s%s%s:%s> ' (whoami) (hostname|cut -d . -f 1) (set_color $fish_color_cwd) (prompt_pwd) (set_color normal) (parse_git_branch)
    printf '%s@%s %s%s%s> ' (whoami) (hostname|cut -d . -f 1) (set_color $fish_color_cwd) (prompt_pwd) (set_color normal)

Reference here (Thanks for sharing the snippet!)

Debugging Autolayout

If you need to debug the constraints that produced any view layout, just hit LLVM, and type:

po [[UIWindow keyWindow] _autolayoutTrace]

This will help you get the Autolayout Trace. Pick up the troublesome view, find its memory address, and then try:

po [0x12341234 constraintsAffectingLayoutForAxis:1]

Note that you should replace 0x12341234 with the memory address of the view you’d like to debug. AxisX = 0, while AxisY = 1.

Props to this extremely useful post.

iOS 8 Autosizing Cells

The latest iOS release (8.0 at the time this was written!) added a new cool feature: autosizing cells. Meaning that we don’t really need to implement tableView:heightForRowAtIndexPath: anymore.

How can we enable this?. Super simple, just add the following snippet:

self.tableView.estimatedRowHeight = SomeConstant;
self.tableView.rowHeight = UITableViewAutomaticDimension;

Now, here’s the deal. iOS 7 still requires tableView:heightForRowAtIndexPath: to be implemented. And if you do implement it, iOS 8 will disregard the Automatic Dimension settings.

Solution?.. import objc/runtime.h, and place this hack in your UITableView’s delegate:

- (BOOL)respondsToSelector:(SEL)aSelector
    if (sel_isEqual(aSelector, @selector(tableView:estimatedHeightForRowAtIndexPath:)) ||
        sel_isEqual(aSelector, @selector(tableView:heightForRowAtIndexPath:))) {
        return false;
    return [super respondsToSelector:aSelector];

YES. It’s a hack =)

Fixing: StatusBar covering your UIViewController’s view

Ever since iOS 7, if you’re not using a UINavigationController instance, you’ll need to perform a very simple step, in order to prevent iOS’s StatusBar from covering your view:

1. Press Control, click over the “Top Layout Guide”, and drag it upon the troublesome view.
2. You’ll get a small popup. Please, click on “Vertical Spacing”.
3. Edit the new constraint, and update the Constant value, as needed.

Reference here!

%d bloggers like this: