小编Edg*_*gar的帖子

从pod依赖项中使用IB_DESIGNABLE实时渲染自定义组件

IB_DESIGNABLE在pod中使用时遇到了一些困难.

我创建了一个自定义视图,我将其标记为IB_DESIGNABLE并创建了一个使用它的示例项目.到目前为止没问题.

将该自定义视图添加为pod依赖项时会出现此问题.虽然项目已成功构建和运行,但在打开使用自定义视图的故事板时会出现错误.实时渲染过程启动并尝试在"界面"构建器中显示实时视图但它失败并显示以下错误:

在此输入图像描述

这太糟糕了,因为我们失去了实时渲染,在我看来,这是Xcode 6的最佳功能之一.

  • Cocoapods宝石版:0.34.4
  • Xcode版本:6.1(6A1052d)

我尝试过使用其他项目IB_DESIGNABLE并拥有podspec:

  1. https://github.com/Eddpt/EAColourfulProgressView(类别:EAColourfulProgressView)
  2. https://github.com/hayashi311/HRButton(类别:HRButton)
  3. https://github.com/Estimote/iOS-Indoor-SDK(类别:ESTIndoorLocationView)

其他人在Estimote中遇到了同样的问题- 室内位置错误,但所描述的解决方案意味着失去了实时渲染功能.

有没有人能够IB_DESIGNABLE通过Cocoapods 使用组件?

错误:"无法从路径加载可设计项(null)"

objective-c ios xcode6 ibdesignable

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

在iOS 9上使用NavigationController进行推送动画的自定义转换

我在嵌入的视图控制器之间有一个自定义推送转换,UINavigationController当使用iOS 7/8构建时它工作正常,但在针对iOS 9 SDK构建时呈现错误的布局.

- (void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext
{
  UIViewController *fromViewController = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey];
  UIViewController *toViewController = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey];

  [transitionContext.containerView addSubview:toViewController.view];

  ...
Run Code Online (Sandbox Code Playgroud)

然后它继续并执行动画.问题是toViewController,即使使用右上方布局指南自动布局约束,内容也会显示导航栏后面的内容.

尽管如此,它在iOS 8上运行正常,如果我们强制重绘(例如,将应用程序发送到后台并将其恢复,在顶部呈现模式并将其解除等)将导致整个自动布局系统重绘并且toViewController视图跳转到正确的位置(作为顶部布局指南,导航栏中的x像素,而不是设备屏幕顶部的x像素).

添加

[self.view setNeedsUpdateConstraints];
[self.view layoutIfNeeded];
Run Code Online (Sandbox Code Playgroud)

如果放入viewDidAppear:animated,但不起作用viewDidLoad或工作viewWillAppear:animated.这不是一个解决方案,因为用户会在重绘时看到视图跳跃viewDidAppear:animated

uinavigationcontroller ios custom-transition ios9

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

崩溃请求授权iOS 10中的照片库

我有一个示例iOS 10应用程序请求授权照片库并在真实设备上崩溃,并出现以下崩溃错误:

PhotosAuthorizationCrashTest[2014:42551] [access] <private>

回购可以在这里找到

这是请求授权的代码(Swift 3.0):

private func requestAuthorizationIfNeeded() {
    DispatchQueue.main.async {
        let status = PHPhotoLibrary.authorizationStatus()
        if status == .authorized {
            return
        }

        PHPhotoLibrary.requestAuthorization({ (status) in
            if status == .authorized {
                return
            }

            NSLog("Could not get authorization to access photos")
        })
    }
}
Run Code Online (Sandbox Code Playgroud)

ios swift3 ios10

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