【问题标题】:Layer transform matrix (CATransform3D, etc.) but with IBDesignable?层变换矩阵(CATransform3D 等)但带有 IBDesignable?
【发布时间】:2016-05-18 23:27:13
【问题描述】:

这个类将透视一个直立的图像。

它可以完美运行,但不能在带有 IBDesignable 的 Storyboard 中实时运行。真是太可悲了。

是否可以使用 CATransform3D 等在带有 IBDesignable 的 Storyboard 上进行实时显示??

// Twist.swift .. twist on Y, perspective from the left
import UIKit
@IBDesignable
class Twist:UIViewController
    {
    @IBInspectable var perspective:CGFloat = 0.5        // -1 to 1

    @IBOutlet var im:UIView!    // the image you want to twist on y

    override func prepareForInterfaceBuilder()
        { twist(perspective) }

    override func viewDidAppear(animated: Bool)
        {
        twist(perspective)
        super.viewWillAppear(animated)
        }

    func twist(f:CGFloat)           // -1 to 1
        {
        // hinge around left edge
        im.layer.anchorPoint = CGPointMake(0, 0.5)
        im.center = CGPointMake(0.0, self.view.bounds.size.height/2.0)

        // base transform, twist on y
        var t:CATransform3D = CATransform3DIdentity
        t.m34 = -1/500
        im.layer.transform = t
        im.layer.transform = CATransform3DRotate(t, f*CGFloat(M_PI_2), 0, 1, 0);
        }
    }

【问题讨论】:

    标签: swift xcode7 calayer ibdesignable


    【解决方案1】:

    我已经遇到了实时预览转换的问题。似乎它只是不起作用,可能还没有实现。

    有一点,只有UIViews 可以是@IBDesignable。在这里您可以看到两个@UIDesignable 类都无法呈现。我为示例创建了一个类 TwistableView。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-14
      • 2012-06-11
      • 2013-01-06
      • 1970-01-01
      • 2013-03-16
      • 1970-01-01
      相关资源
      最近更新 更多