[英]In ECSlidingViewController, how to disable the top view from sliding off screen
所以我正在嘗試在我的App中實現ECSlidingViewController示例。 github源
我唯一想做的修改是防止TopView在更改包含的視圖之前完全滑出屏幕,而只是將TopView保留在原位,而是使用新的視圖控制器來更新它的包含視圖。從菜單中選擇 Facebook應用程序正是我想要的,以防聽起來令人困惑。
在項目中瀏覽了一段時間后,我確定它(顯然)與ECSlidingViewController.h中的這一行代碼有關:
- (void)anchorTopViewOffScreenTo:(ECSide)side animations:(void(^)())animations onComplete:(void(^)())complete;
我看着在.m中被調用的位置:
- (void)anchorTopViewOffScreenTo:(ECSide)side{
[self anchorTopViewOffScreenTo:side animations:nil onComplete:nil];
}
- (void)anchorTopViewOffScreenTo:(ECSide)side animations:(void(^)())animations onComplete:(void(^)())complete
{
CGFloat newCenter = self.topView.center.x;
if (side == ECLeft) {
newCenter = -self.resettedCenter;
} else if (side == ECRight) {
newCenter = self.screenWidth + self.resettedCenter;
}
[self topViewHorizontalCenterWillChange:newCenter];
[UIView animateWithDuration:0.25f animations:^{
if (animations) {
animations();
}
[self updateTopViewHorizontalCenter:newCenter];
} completion:^(BOOL finished){
if (complete) {
complete();
}
_topViewIsOffScreen = YES;
[self addTopViewSnapshot];
dispatch_async(dispatch_get_main_queue(), ^{
NSString *key = (side == ECLeft) ? ECSlidingViewTopDidAnchorLeft : ECSlidingViewTopDidAnchorRight;
[[NSNotificationCenter defaultCenter] postNotificationName:key object:self userInfo:nil];
});
}];
}
我猜這是在告訴動畫如何制作動畫的地方,但是我不明白其中有什么可以告訴它移出屏幕。 我是否忽略了一些簡單的事情,就像替換nil
? 也許我找不到某個地方的另一個價值? 這是我關於StackOverflow的第一個問題,盡管我通常是Obj-C的新手,但我對它的工作原理相當了解。 因此,我希望至少能收到正確方向的提示。 謝謝!
只需使用以下方法
- (void)anchorTopViewTo:(ECSide)side animations:(void (^)())animations onComplete:(void(^)())complete
代替
- (void)anchorTopViewOffScreenTo:(ECSide)side animations:(void(^)())animations onComplete:(void(^)())complete
如果只是您要刪除的彈跳,請不要調用:
[self anchorTopViewOffScreenTo:side animations:nil onComplete:nil];
直接致電:
[self.slidingViewController resetTopView];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.