首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

iOS 單一按鈕切換側邊選單顯示/隱藏:狀態旗標控制動畫

     編輯:程式設計綜合問答

核心邏輯

  • 用 BOOL isShow 記錄當前狀態
  • 點擊按鈕切換旗標,計算目標 X 座標
  • UIView animateWithDuration 執行位移動畫

完整實現

// 成員變數
BOOL isShow;
UITableView *sideMenu;
CGFloat hiddenX, visibleX;

- (void)viewDidLoad {
    [super viewDidLoad];
    isShow = NO;
    hiddenX = 1060;   // 螢幕外
    visibleX = 960;   // 顯示位置

    sideMenu = [[UITableView alloc] initWithFrame:CGRectMake(hiddenX, 88, 63, 661)];
    sideMenu.backgroundColor = [UIColor redColor];
    [self.view addSubview:sideMenu]; // 一次性加入視圖層級
}

- (IBAction)menuTouched {
    CGFloat targetX = isShow ? hiddenX : visibleX;
    [UIView animateWithDuration:1.25 animations:^{
        CGRect frame = sideMenu.frame;
        frame.origin.x = targetX;
        sideMenu.frame = frame;
    }];
    isShow = !isShow; // 切換狀態
}

關鍵優化

  • 不要在點擊事件中重複 alloc/init 視圖,只在 viewDidLoad 建立一次
  • 動畫只修改 frame.origin.x,保持其他屬性不變
  • 若選單需隨內容高度調整,動畫完成後再 sizeToFit

Swift 版本

var isShow = false
let sideMenu = UITableView(frame: CGRect(x: 1060, y: 88, width: 63, height: 661))

@IBAction func menuTouched() {
    let targetX = isShow ? 1060 : 960
    UIView.animate(withDuration: 1.25) {
        self.sideMenu.frame.origin.x = targetX
    }
    isShow.toggle()
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved