0
只要按下下拉菜單,就會切換此視圖,但視圖剛剛出現(因爲它已隱藏)。如何讓它從選定的下拉菜單中下來,然後返回到未選中的下拉菜單中。我嘗試了一些轉換,但我無法獲得任何工作。我希望它看起來像一個下拉菜單出現。從頂部(如下拉)隱藏的動畫桌面視圖
-(void)addSubviewOvertop:(BOOL)selected
{
dropDownTableView.hidden = !selected;
}
只要按下下拉菜單,就會切換此視圖,但視圖剛剛出現(因爲它已隱藏)。如何讓它從選定的下拉菜單中下來,然後返回到未選中的下拉菜單中。我嘗試了一些轉換,但我無法獲得任何工作。我希望它看起來像一個下拉菜單出現。從頂部(如下拉)隱藏的動畫桌面視圖
-(void)addSubviewOvertop:(BOOL)selected
{
dropDownTableView.hidden = !selected;
}
要做到這一點的方法是使用動畫(UIViewAnimations)。因此,您在顯示任何內容之前將隱藏視圖設置在可見視圖框架上方。當您想要展示相框時,將動畫設置爲可視框架。
當您第一次加載視圖時,您設置隱藏的幀(我使用偏移),並顯示時您的幀。然後在出現將您的視圖設置爲隱藏框架之前,以便在用戶第一次看到主視圖時不顯示它。
然後,當您想要顯示它時,可以用動畫將其設置爲顯示幀,反之則將其隱藏。
一個好主意是讓一個屬性,它發生在哪裏,然後才能攔截集的制定者......
然後,以顯示菜單視圖,你可以這樣做:
self.menuShowed = YES;
請注意,你必須使用自我。如果你使用_menuShowed,它會設置iVar,但不會觸發setter。
未經測試的代碼想法(假設你有一個連接並實例化的UIView(menuView)命名menuView:
@interface ViewController()
@property (nonatomic, strong) UIView *menuView;
@property (nonatomic) CGRect hiddenFrame;
@property (nonatomic) CGRect showedFrame;
@property (nonatomic) BOOL menuShowed;
@end
@implementation ViewController
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
self.hiddenFrame = CGRectOffset(self.menuView.frame, 0 - self.menuView.frame.size.height, 0);
self.showedFrame = CGRectOffset(self.menuView.frame, self.menuView.frame.size.height, 0);
_menuShowed = NO;
self.menuView.frame = self.hiddenFrame;
}
- (void)setMenuShowed:(BOOL)menuShowed
{
if (menuShowed) {
[UIView animateWithDuration:0.7 animations:^{
self.menuView.frame = self.showedFrame;
}];
} else {
[UIView animateWithDuration:0.7 animations:^{
self.menuView.frame = self.hiddenFrame;
}];
}
_menuShowed = menuShowed;
}
@end
設置你的下拉框將高於屏幕和[UIView的animateWithDuration]動畫下拉框 – stefos
你。可以嘗試爲tableView的高度添加一個NSLayoutConstraint,並設置一個適合您需求的常量。 – hacker2007
是的stefos - 我做了你所說的代碼雖然看起來不太好,但它的工作原理非常感謝! –