所以我试图用这个视图做的就是让我可以上下滑动UIView(menuView)进出屏幕。所以在storyboard / IB中,我放置了一个UIView并将其连接到文件所有者和所有爵士乐。然后我输入以下代码的程序。问题是,当nib加载时,它不会将UIView放在应该放在首位,然后滑动不起作用。我用一个按钮尝试了这种编程方法,它工作正常。提前感谢您对此主题的任何帮助。
.h文件
UIView *menuView;
}
@property (strong, nonatomic) IBOutlet UIView *menuView;
.m文件
@synthesize menuView;
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
UISwipeGestureRecognizer *swipeGesture = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipe:)];
[swipeGesture setDirection:UISwipeGestureRecognizerDirectionDown];
[self.view addGestureRecognizer:swipeGesture];
menuView = [[UIView alloc] initWithFrame:CGRectMake(0, -80, 320, 80)];
[menuView setFrame:CGRectMake(0, -80, 320, 80)];
[self.view addSubview:menuView];
}
-(void)swipe:(UISwipeGestureRecognizer*)sender {
[UIView animateWithDuration:0.5 animations:^{
[menuView setFrame:CGRectMake(0, 0, 320, 80)];
}];
}
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
答案 0 :(得分:0)
您已将menuView设置为storyBoard / IB outlet。这意味着xib / nib / storyboard正在执行alloc-init和初始框架。所以你应该删除这一行:
menuView = [[UIView alloc] initWithFrame:CGRectMake(0, -80, 320, 80)];
您还可以从viewdidLoad
中删除下一行:
[menuView setFrame:CGRectMake(0, -80, 320, 80)];
这是多余的。它已经由“initWithFrame”完成 - 它已经由nib完成。
另一方面,在笔尖上放置屏幕外的东西可能很困难。因此,您实际上可以恢复setFrame:
行 - 但在 viewWillAppear
而不是viewDidLoad
。在 nib已经完成它之后,viewWillAppear
被称为,因此笔尖不会妨碍你的重构。
进行这些更改,如果“所有爵士乐”包括将menuView连接到参考插座,那么你应该不错。