小编Dav*_*mes的帖子

Cocoa Autolayout:内容拥抱与内容压缩阻力优先

关于Cocoa Autolayout关于内容拥抱和抗压缩性之间差异的Apple文档,我找不到明确的答案.

有人可以解释他们的用法和差异吗?

cocoa autolayout

634
推荐指数
7
解决办法
20万
查看次数

如何使用CAShapeLayer创建圆角

有没有办法为圆角添加圆角CAShapeLayer?在我的情况下,我需要形状图层来创建虚线边框lineDashPattern.

带有虚线的圆角 - 不正确

^注意虚线是如何不圆化的

cocoa-touch ios

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

如何在Xcode中导入带加号(+)的Swift模块

我正在尝试导入一个名为" NSObject + Rx " 的模块,但是Xcode抱怨一个模糊的错误(用等分隔的连续语句).

import NSObject+Rx
Run Code Online (Sandbox Code Playgroud)

知道如何导入具有这样的特殊字符的模块吗?

xcode cocoapods swift

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

如何在 Swift 中控制动画旋转方向超过 180°?

根据文档rotated(by:)

\n\n
\n

角度

\n\n

仿射变换旋转的角度(以弧度为单位)。在 iOS 中,正值指定逆时针旋转,负值指定顺时针旋转。

\n
\n\n

这引起了很多混乱,并已部分得到解答,但即使我们接受坐标系被翻转(并且只是执行与文档所述相反的操作),它在动画时仍然提供不一致的结果。

\n\n

旋转方向(顺时针或逆时针)取决于目标旋转与当前旋转的接近程度:

\n\n
    \n
  • <= 180\xc2\xba顺时针动画
  • \n
  • > 180\xc2\xba逆时针动画
  • \n
\n\n

使用UIView.animateUIViewPropertyAnimator显示不一致:

\n\n
// Animates CLOCKWISE\nUIView.animate(withDuration: 2.0) {\n    let radians = Angle(179).radians // 3.12413936106985\n    view.transform = view.transform.rotated(by: CGFloat(radians))\n}\n// Animates COUNTER-CLOCKWISE\nUIViewPropertyAnimator(duration: 2, curve: .linear) {\n    let radians = Angle(181).radians // 3.15904594610974\n    view.transform = view.transform.rotated(by: CGFloat(radians))\n}\n// Does not animate\nUIViewPropertyAnimator(duration: 2, curve: .linear) {\n    let radians = Angle(360).radians // 6.28318530717959\n …
Run Code Online (Sandbox Code Playgroud)

animation ios swift

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

如何使用 UIViewPropertyAnimator 进行 360º 旋转

如果我想通过UIViewPropertyAnimator如何顺时针 360º 动画对象来利用用户交互动画?

// Does not animate
let animator = UIViewPropertyAnimator(duration: 2, curve: .linear) {
    let radians = Angle(360).radians // 6.28318530717959
    view.transform = view.transform.rotated(by: CGFloat(radians))
}
// (Using RxSwift to handle the user interaction via UISlider, 
// but that can be ignored as an implementation detail for this question.)
let scrubs = slider.rx.value.asDriver()
scrubs.drive(onNext: { (value:Float) -> Void in
    animator.fractionComplete = CGFloat(value)
})
Run Code Online (Sandbox Code Playgroud)

animation ios swift

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

从 CATransform3D 获取缩放、平移和旋转

给定一个CATransform3D变换,我想将缩放、平移和旋转提取为单独的变换。通过一些挖掘,我能够CGAffineTransform在 Swift 中完成此操作,如下所示:

extension CGAffineTransform {
    var scaleDelta:CGAffineTransform {
        let xScale = sqrt(a * a + c * c)
        let yScale = sqrt(b * b + d * d)
        return CGAffineTransform(scaleX: xScale, y: yScale)
    }
    var rotationDelta:CGAffineTransform {
        let rotation = CGFloat(atan2f(Float(b), Float(a)))
        return CGAffineTransform(rotationAngle: rotation)
    }
    var translationDelta:CGAffineTransform {
        return CGAffineTransform(translationX: tx, y: ty)
    }
}
Run Code Online (Sandbox Code Playgroud)

如何CATransform3D使用数学做类似的事情?(我正在寻找一种不使用键路径的解决方案。)

(由您自行决定实施或仅数学答案)

catransform3d swift

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