相关疑难解决方法(0)

iOS 8 - 使用自定义演示文稿解除视图控制器后屏幕空白

当使用时关闭各种视图控制器时UIModalPresentationCustom,在取消视图控制器后屏幕变为黑色,就像所有视图控制器已从视图层次结构中删除一样.

正确设置了转换委托,正确地请求并传递了animationControllerForPresentedController,并在动画结束后完成转换.

这个确切的代码在使用iOS 7 SDK编译时非常有效,但在使用iOS 8b5编译时会破坏

cocoa-touch objective-c uikit ios ios8

66
推荐指数
3
解决办法
2万
查看次数

UIViewController自定义过渡卡在iOS13上

我已经在我的iOS应用中实现了两个视图控制器之间的自定义过渡,并且在iOS 10、11和12上运行良好。

现在,我想使用Xcode 11 beta 6和iOS 13 beta 8为iOS 13做好准备,但是过渡很困难。

自定义过渡应将第一个视图控制器向上移动并移出屏幕,第二个视图控制器从下向上移出。但是现在它又回到了iOS13的默认呈现样式pageSheet,只是将第一个视图控制器缩小了一点,并添加了暗淡的叠加层。但是第二个视图没有出现。

我发现,在该方法animatePresentation(context: UIViewControllerContextTransitioning)context不“从”视图返回,这样context.view(forKey: .from)的回报nil

没有“从”角度看,我该怎么办?

FlyUpTransition.swift

class FlyUpTransition: NSObject, UIViewControllerAnimatedTransitioning {

    var mode: Mode = .present

    enum Mode {
        case present
        case dismiss
    }

    func transitionDuration(using transitionContext: UIViewControllerContextTransitioning?) -> TimeInterval {
        return TimeInterval(0.45)
    }

    func animateTransition(using transitionContext: UIViewControllerContextTransitioning) {
        switch mode {
        case .present:
            animatePresentation(context: transitionContext)
        case .dismiss:
            animateDismissal(context: transitionContext)
        }
    }

    func animatePresentation(context: UIViewControllerContextTransitioning) {
        guard let fromView = …
Run Code Online (Sandbox Code Playgroud)

uiviewcontroller ios swift ios13

11
推荐指数
2
解决办法
1393
查看次数

缓慢的presentViewController性能

UIViewControllerTransitioningDelegate用来在两个视图控制器(从a MKMapView)到构建在(AVFoundation)上的自定义Camera 之间构建自定义转换.一切顺利,直到我打电话presentViewController,手机似乎挂了大约1秒钟(当我记录所有东西时).这甚至似乎发生在我转换到更简单的视图时(我有一个视图控制器只显示一个UITextview,甚至在实际调用转换之前似乎有大约.4 - .5秒的延迟).

这是我现在称之为过渡的方式

 dispatch_async(dispatch_get_main_queue(), ^{
        UIStoryboard*  sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
        CameraViewController *cvc2 = [sb instantiateViewControllerWithIdentifier:@"Camera"];

        cvc2.modalPresentationStyle = UIModalPresentationFullScreen; // Needed for custom animations to work
        cvc2.transitioningDelegate = self; //Conforms to the UIViewControllerTransitioningDelegate protocol
        [self presentViewController:cvc2 animated:YES completion:nil];
    });
Run Code Online (Sandbox Code Playgroud)

这是我animateTransition打电话的方法.非常直接,目前呈现此视图的视图上只有一个MkMapView(没有其他视图或方法).

-(void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext {

if (self.type == MapAnimationTypePresent) {//From map to another view

    UIView *containerView = [transitionContext containerView];
    UIViewController *fromViewController = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey];
    UIViewController *toViewController = …
Run Code Online (Sandbox Code Playgroud)

avfoundation uiviewcontroller mkmapview ios presentviewcontroller

5
推荐指数
0
解决办法
1953
查看次数

iOS Swift:如何重新创建照片应用程序UICollectionView布局

我想知道如何安静一段时间如何创建iOS照片应用程序布局.我怎样才能使它看起来像放大到一个集合,同时导航栏显示一个后退按钮?

它是一个新的视图控制器,它被推送到UINavigationController?如果是这样,他们在扩展时如何设法匹配瓷砖.

甚至可能有第三方库让我轻松地重新创建这样的布局?

希望你能帮助我理解这是如何工作的概念.

transitions uinavigationcontroller ios uicollectionview swift

3
推荐指数
1
解决办法
2014
查看次数

在UIPresentationController中动画呈现视图

对于某些情况,我建议阅读:

非常相关的问题:"来自View Controller"使用UIViewControllerContextTransitioning消失 非常相关的答案:https://stackoverflow.com/a/25901154/751268


我正在尝试实现一个自定义视图控制器转换,动画新视图控制器覆盖屏幕的一半,同时将呈现视图控制器缩小到90%(在窗口中心,在呈现的视图控制器下面).

首先,我的问题是viewFromKey:返回nil.要解决这个问题,答案提到:

如果要为呈现视图控制器的视图设置动画,则应考虑使用UIModalPresentationFullscreen样式或继续使用UIModalPresentationCustom并实现自己的子类,UIPresentationControllershouldRemovePresentersView返回YES.

我做到了,并且viewFromKey:不再返回nil,但现在呈现视图控制器完全消失(这是有道理的,考虑到我明确说它应该通过实现shouldRemovePresentersView).

我将呈现视图控制器的视图添加到容器视图,但它仍然被删除.还有什么我应该做的才能让这个工作?

这是一些相关的代码:

UIView *fromView = [transitionContext viewForKey:UITransitionContextFromViewKey
UIView *toView = [transitionContext viewForKey:UITransitionContextToViewKey];

BOOL show = self.isPresentation;
UIView *menuView = show ? toView : fromView;
UIView *backView = show ? fromView : toView;

UIView *containerView = [transitionContext containerView];

[containerView addSubview:backView];
[containerView addSubview:dimmedView];
[containerView addSubview:menuView];

// Adjust transforms, alpha and perform animations …
Run Code Online (Sandbox Code Playgroud)

animation uiviewcontroller ios

1
推荐指数
1
解决办法
3320
查看次数