我想知道iOS應用程序,實現帶有按鈕和滑塊的滑出式面板的最佳方式是什麼?在iOS上,實現一個完整的小部件的滑出式面板的好方法是什麼?
也就是說,應用程序將有一個小的「i」圖標在屏幕的右下角的那種樣子:
當該圖標被觸摸時,尺寸的面板大約1/4的屏幕會從底部滑出,顯示一個按鈕,一個滑塊或其他一些小部件。
實現它的最佳方式是什麼?使用Interface Builder還是純粹通過代碼實現它,以及用於面板的對象(UIView或具有此幻燈片/幻燈片功能的任何現有窗口小部件)? 。
我想知道iOS應用程序,實現帶有按鈕和滑塊的滑出式面板的最佳方式是什麼?在iOS上,實現一個完整的小部件的滑出式面板的好方法是什麼?
也就是說,應用程序將有一個小的「i」圖標在屏幕的右下角的那種樣子:
當該圖標被觸摸時,尺寸的面板大約1/4的屏幕會從底部滑出,顯示一個按鈕,一個滑塊或其他一些小部件。
實現它的最佳方式是什麼?使用Interface Builder還是純粹通過代碼實現它,以及用於面板的對象(UIView或具有此幻燈片/幻燈片功能的任何現有窗口小部件)? 。
假設您將在應用程序中的多個位置使用此功能,您可能希望將其作爲可重用組件。我建議將幻燈片放在自己的視圖控制器中,如果需要的話,可以使用IB創建它的視圖。當用戶點擊'我'時,您將分配幻燈片視圖控制器,將其視圖作爲子視圖添加到您當前的視圖控制器併爲其添加動畫。如果您需要在幻燈片和當前視圖控制器之間進行通信,您可以在您的幻燈片中創建一個自定義委託協議。我承認這是做出一些假設,但可能會爲您提供一個乾淨的解決方案。
通過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