BUGFIX: fixed misplaced background if horizontal offset is set
REFACTORING:
- reused code
- more precise positioning of bg vs button
- animations using block methods
- using builtin UIControl action methods