If you set button corner radius programmatically it won't return to its original state.
I suggest under setOriginalState method set
self.layer.cornerRadius = layer.cornerRadius instead of self.cornerRadius , this way it will go back to original state if you set programmatically or via storyboard.