抽屜效果重寫

2021-06-28 16:44:20 字數 2997 閱讀 4142

//  這是主介面的內容,可以拖動主介面實現效果

// mainviewcontroller.m

// wangyidrawer

//// created by xiaoyao on 15/2/9.

//#import "mainviewcontroller.h"

#import "leftviewcontroller.h"

#import "rightviewcontroller.h"

#import #define kendx frame.origin.x // 手勢結束的x

#define kleftviewwidth _leftview.frame.size.width // 左部view的寬度

#define krightviewwidth _rightview.frame.size.width // 右部view的寬度

@inte***ce mainviewcontroller ()

@end

@implementation mainviewcontroller

- (void)viewdidload

// 隱藏狀態列

- (bool)prefersstatusbarhidden

- (void)firstloading

- (void)pangesture:(uipangesturerecognizer *)pan

// 計算出平移拖動的距離

cgpoint delta = [pan translationinview:self.view];

cgrect frame = _mainview.frame;

kendx = _startx + delta.x;

// 限制拖動範圍

if (kendx >= kleftviewwidth)

if (kendx <= - krightviewwidth)

// 由於leftview 和 rightview 是重合的所以必須要隱藏乙個

if (kendx > 0) else

if (uigesturerecognizerstateended == pan.state) else if (_startx == 0 && delta.x < 0) else if (_startx == kleftviewwidth && delta.x < 0) else if (_startx == -krightviewwidth && delta.x > 0)

} // 最後重新設定mainview frame

[uiview animatewithduration:0.2 animations:^];

// 給mianview新增陰影圖層

[self addshadowformianviewwithendx:kendx];

}- (void)addshadowformianviewwithendx:(cgfloat)endx else

}#pragma mark - leftviewdelegate

- (void)lefttableviewrowclicked:(column *)rowselected

// 4,移除contentview中的正在顯示的舊的子view

if (_contentview.subviews.count > 0)

// 5,最後將子控制器的view新增到contentview中,顯示

columnvc.view.frame = _contentview.bounds;

[self.contentview addsubview:columnvc.view];

nslog(@"%@",self.contentview);

// 在新增到mainview之前 ,先得到mainview導航控制器的子控制器,並將其移除(如果有的話)

}// 抽取出來的公共**,設定mainview的x,引數是endx

- (void)setmainviewx:(cgfloat)endx

];

}@end

/**************** 左側**設定** *******/

// // leftviewcontroller.m

// wangyidrawer

//// created by xiaoyao on 15/2/9.

//#import "leftviewcontroller.h"

@inte***ce leftviewcontroller ()

@end

@implementation leftviewcontroller

- (void)viewdidload

#pragma mark - uitableviewdelegate

- (nsinteger)tableview:(uitableview *)tableview numberofrowsinsection:(nsinteger)section

- (cgfloat)tableview:(uitableview *)tableview heightforrowatindexpath:(nsindexpath *)indexpath

#pragma mark - uitableviewdatasource

- (uitableviewcell *)tableview:(uitableview *)tableview cellforrowatindexpath:(nsindexpath *)indexpath

if (indexpath.row < _classnamearray.count)

return cell;

}- (void)tableview:(uitableview *)tableview didselectrowatindexpath:(nsindexpath *)indexpath

if ([self.delegate respondstoselector:@selector(lefttableviewrowclicked:)])

}@end

XMG 抽屜效果

1.比如說我建立了3個view void viewdidload 如果想要監聽乙個物件的某個屬性可以使用kvo 只要監聽的屬性一改變,就會呼叫觀察者的這個方法,通知你有新值 void observevalueforkeypath nsstring keypath ofobject id object...

IOS 簡單抽屜效果

引入每三方類庫 mmdrawercontroller 引入 mmdrawercontroller.h mmdrawervisualstate.h 左右兩個抽屜的controller 和mainviewcontroller mainviewcontroller.h leftviewcontroller...

抽屜效果實現

import viewcontroller.h define maxy 60 inte ce viewcontroller property nonatomic,weak uiview mainview property nonatomic,weak uiview leftview property...