小编Mar*_*tin的帖子

UITableViewDiffableDataSource 设置不同的单元格动画

我正在使用UITableViewDiffableDataSource渲染单元格,我想知道如何对行进行粒度动画。

有一个属性

self.dataSource?.defaultRowAnimation = .fade
Run Code Online (Sandbox Code Playgroud)

适用于tableView的所有行,但我想要某些单元格的动画,而其他单元格没有动画。“defaultRowAnimation”中的“default”表明还有其他方法。

不幸的是,关于 subjet 的 Apple 文档有点少

例如,是否有RowAnimation根据给定的方法询问 a 的方法IndexPath

uitableview swift diffabledatasource

8
推荐指数
0
解决办法
638
查看次数

SwiftUI ScrollView 上是否有等效的delayscontenttouches?

在 SwiftUI 中,Button触摸是亮点。

但是,当您将一个放入 a 中时ScrollView,它也会在用户滚动时突出显示。

在 上UIKitdelayscontenttouches UIScrollView 的属性完全解决了这个问题,但我还没有找到 SwiftUI 的方法来做到这一点。

这是重现该问题的一些基本代码。

ScrollView {
    VStack {
        Button(action: {
            print("1")
        }, label: {
            Color.blue.frame(height: 300)
        })
        Button(action: {
            print("2")
        }, label: {
            Color.blue.frame(height: 300)
        })
        Button(action: {
            print("3")
        }, label: {
            Color.blue.frame(height: 300)
        })
    }
}
Run Code Online (Sandbox Code Playgroud)

swiftui

8
推荐指数
0
解决办法
465
查看次数

AVAssetImageGenerator有时返回来自2个连续帧的相同图像

我正在从视频中提取每一帧AVAssetImageGenerator,但有时它会连续两次返回我几乎相同的图像(它们没有相同的"帧时间").有趣的是它总是发生(在我的测试视频中)每5帧.

这里这里是两个图像(在新选项卡中打开每个图像然后切换选项卡以查看差异).

这是我的代码:

//setting up generator & compositor
self.generator = [AVAssetImageGenerator assetImageGeneratorWithAsset:asset];
generator.appliesPreferredTrackTransform = YES;
self.composition = [AVVideoComposition videoCompositionWithPropertiesOfAsset:asset];

NSTimeInterval duration = CMTimeGetSeconds(asset.duration);
NSTimeInterval frameDuration = CMTimeGetSeconds(composition.frameDuration);
CGFloat totalFrames = round(duration/frameDuration);

NSMutableArray * times = [NSMutableArray array];
for (int i=0; i<totalFrames; i++) {
    NSValue * time = [NSValue valueWithCMTime:CMTimeMakeWithSeconds(i*frameDuration, composition.frameDuration.timescale)];
    [times addObject:time];
}

AVAssetImageGeneratorCompletionHandler handler = ^(CMTime requestedTime, CGImageRef im, CMTime actualTime, AVAssetImageGeneratorResult result, NSError *error){
    // If actualTime is not equal to requestedTime image …
Run Code Online (Sandbox Code Playgroud)

video-processing avfoundation ios avvideocomposition

7
推荐指数
2
解决办法
4470
查看次数

iOS9通用链接无法在Safari中运行,但可以在其他应用程序中使用

我目前正在为客户端实现iOS9通用链接.

在关注了apple doc和一些很好的 教程之后,我使用Safari的测试链接网页成功地在第一次尝试时使其工作.

但突然之间,没有一个测试链接正在运行!我在一天结束时没有回答,直到今天早上我试图从Chrome应用程序打开这些测试链接时:我再次搜索.

我对昨天工作得很好的事实感到非常困惑,并且发生了一些事情阻止Safari展示应用程序,显示网站(没有更改源/服务器代码)

我怀疑自己点击了右上角的快捷方式(具有网站访问权限的快捷方式),我怀疑Safari已经保存了这个选择.(在重新启动手机并删除Safari缓存的过程中)

有人对发生的事情有任何线索吗?

如果Safari确实保存了我点击右上方按钮的事实,有没有办法让它忘记?

ios9 ios-universal-links

6
推荐指数
2
解决办法
2686
查看次数

Swift UINavigationController子类中的强制init覆盖

我目前正在UINavigationController为一个为视图控制器流提供服务的框架进行子类化(在某种程度上,就像UIImagePickerController这样)

这是我的实现示例,简化为尽可能简单,可以在游乐场中运行.

import UIKit

public class MyNavigationController: UINavigationController {

    public var anyVar: Int?

    public init(anyVar: Int) {
        let viewController = UIViewController()
        super.init(rootViewController: viewController)

        self.anyVar = anyVar
    }

    required public init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }
}

let navigationController = MyNavigationController(anyVar: 42)
Run Code Online (Sandbox Code Playgroud)

最后一行是崩溃,有一个EXC_BAD_INSTRUCTION.当我在Xcode中运行,它告诉我,在运行时init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?)失踪了.

如果我覆盖该方法:

public override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {
    super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
}
Run Code Online (Sandbox Code Playgroud)

......一切运作良好:您可以尝试自己的游乐场.

我不明白为什么.这对我来说听起来不合逻辑.

UIViewController文件说:

如果您是UIViewController的子类,则必须调用此方法的超级实现,即使您没有使用NIB也是如此.(为方便起见,默认的init方法将为您执行此操作,并为这两个方法参数指定nil.)

但是 …

overriding swift

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

在iphone上使用FBConnect自动登录

我正在尝试为我的iPhone游戏添加facebook功能(Tikitic,在appstore上!:))

通过调用FBLoginDialog对话框来建立facebook连接似乎很容易.但我希望,通过登录和用户默认保存的通行证,自动连接到我的帐户.

它是否存在像[fbsession loginWithName:@"mylog"andPass:@"mypass"]这样的方法?

非常感谢

iphone fbconnect

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

使用 UIViewControllerAnimatedTransitioning 时,iOS 模拟器慢动作动画永远不会结束

当我使用 开发两个视图控制器之间的自定义转换UIViewControllerAnimatedTransitioning,并且当我将 iPhone 模拟器设置为慢动作模式(以便轻松调试动画)时,动画完成处理程序永远不会被调用。这很烦人,因为转换永远不会完成并且应用程序必须被终止,因为 UI 没有响应。

当然,当慢动作关闭时它工作得很好。

一个简单UIViewControllerAnimatedTransitioning实现的例子:

func animateTransition(using transitionContext: UIViewControllerContextTransitioning) {
        let containerView = transitionContext.containerView
        guard
            let fromViewController = transitionContext.viewController(forKey: .from),
            let toViewController = transitionContext.viewController(forKey: .to)
            else { return }

        containerView.addSubview(toViewController.view)
        toViewController.view.transform = CGAffineTransform(translationX: toViewController.view.bounds.width, y: 0)

        fromViewController.beginAppearanceTransition(false, animated: true)
        toViewController.beginAppearanceTransition(true, animated: true)
        UIView.animateSpringly(duration: self.transitionDuration(using: transitionContext), animations: {
            fromViewController.view.transform = CGAffineTransform(translationX: -fromViewController.view.bounds.width, y: 0)
            fromViewController.view.transform = .identity
        }, completion: { _ in
            transitionContext.completeTransition(!transitionContext.transitionWasCancelled)
            fromViewController.endAppearanceTransition()
            toViewController.endAppearanceTransition()
        })
    }
Run Code Online (Sandbox Code Playgroud)

是模拟器错误,还是我的实现有问题?

uiviewanimation ios ios-simulator

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

在 SKSpriteNode 上使用 resizableImageWithCapInsets

我目前正在尝试在 SKSpriteNode 上使用可拉伸图像。

通常,可拉伸图像由方法返回 UIImage::resizableImageWithCapInsets:

所以我写了这段代码:

SKTexture * texture = [SKTexture textureWithImage:[image resizableImageWithCapInsets:UIEdgeInsetsMake(0, 10, 0, 10)]];
SKSpriteNode * node = [SKSpriteNode spriteNodeWithTexture:texture size:CGSizeMake(150, 8)];
Run Code Online (Sandbox Code Playgroud)

但它不起作用。节点在不考虑边缘插入的情况下拉伸自身。难道只有这样吗?

ios uiedgeinsets sprite-kit

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

Heroku推送问题:找不到Bower旋转变压器

你知道Javascript疲劳吗?

现在我做.

我不是一个javascript开发人员,但我正在使用Node和Angular来支持我的项目服务器.

我的所有节点包都安装了npm,我的角度包是安装程序bower.因为这是我学习它的方式.我保持一个package.json和一个bower.json安装一切.通常,我所做的是:

npm install
bower install
Run Code Online (Sandbox Code Playgroud)

但是Heroku只安装了npm包,所以解决方案是在其中包含一个安装后脚本 package.json

它工作得相当完美,除非有几个库不再维护(但这是另一个问题).

从今天开始,当我遇到heroku错误信息时非常完美:

bower angular#*            ENORESOLVER Bower resolver not found: bower-npm-resolver
Run Code Online (Sandbox Code Playgroud)

这是我的 package.json

{
  "name"            : "my-marvelous-app",
  "engines": {
    "node": "5.0.0",
    "npm": "3.3.6"
    },
  "main"            : "server.js",
  "dependencies"    : {
        "express"               : "4.5.x",
        "mongoose"              : "4.2.x",
        ...
        [a bunch of important packages...]
        ...
        "vorpal"                : "latest",
        "bower"                 : "1.7.x"
  },
  "scripts"         : {
    "postinstall": "./node_modules/bower/bin/bower install"
  }
}
Run Code Online (Sandbox Code Playgroud)

和我的 …

heroku node.js npm angularjs bower

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

如何使用Vapor 3处理多部分请求

我是个蒸气初学者,我选择从Vapor 3-rc开始,因为它似乎破坏了Vaport 2的更改。不幸的是,目前没有完整的文档。

我目前正在尝试从Postman上传一个简单的txt文件到我的Vapor 3本地服务器。

这是我的路线

let uploadController = FileUploadController()
router.post("uploadtxt", use: uploadController.uploadTXT)
Run Code Online (Sandbox Code Playgroud)

和我的控制器

final class FileUploadController {
    func uploadTXT(_ req: Request) throws -> Future<String> {
        return try req.content.decode(MultipartForm.self).map(to: String.self, { form in
            let file = try form.getFile(named: "txtfile")
            return file.filename ?? "no-file"
        })
    }
}
Run Code Online (Sandbox Code Playgroud)

首先,通过执行Postman请求,服务器将返回:

{"error":true,"reason":"There is no configured decoder for multipart\/form-data; boundary=...}
Run Code Online (Sandbox Code Playgroud)

通过调查源代码和有关此的有限文档,似乎我应该声明一个解码器来支持多部分传入的请求。

所以我做了:

var contentConfig = ContentConfig.default()
let decoder = FormURLDecoder()
contentConfig.use(decoder: decoder, for: .multipart)
services.register(contentConfig)
Run Code Online (Sandbox Code Playgroud)

FormURLDecoder之所以使用它,是因为它似乎是我所需要的最接近的类。BodyDecoder

现在infite-环插入func decode<T>(_ type: …

swift vapor

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