これをInterface Builderで作成するのは面倒です(とにかく、そのツールは最悪です)。必ずコードで作成する必要があります。コードに集中でき、ビューを表示するためだけに IB で不可解なプロパティを設定する手間がかからない場合は、保守も容易になります...
次のように実装してみてください。
@interface SlideOutMenu: UIView {
UIImageView *imgView;
UITapGestureRecognizer *tap;
}
- (id)initWithImage:(UIImage *)img;
@end
@implementation SlideOutMenu
- (id)initWithImage:(UIImage *)img
{
if ((self = [self initWithFrame:CGRectMake(0, someY, 44, 44)]))
{
imgView = [[UIImageView alloc] initWithImage:img];
[self addSubview:imgView];
[imgView release];
tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(_tapped)];
[self addGestureRecognizer:tap];
[tap release];
}
return self;
}
- (void)_tapped
{
if (self.frame.origin.x > 1.0) // 1.0: some tolerance b/c of floating point numbers
{
[UIView animateWithDuration:0.3 animations:^{
self.frame = CGRectMake(0, self.frame.origin.y, self.frame.size.width, self.frame.size.height);
}];
}
else
{
[UIView animateWithDuration:0.3 animations:^{
self.frame = CGRectMake(120.0, self.frame.origin.y, self.frame.size.width, self.frame.size.height);
}];
}
}
@end