层变换矩阵(CATransform3D 等)但带有 IBDesignable?
Layer transform matrix (CATransform3D, etc.) but with IBDesignable?
此 class 将在直立图像上放置透视图。
它运行完美,但在带有 IBDesignable 的 Storyboard 中无法实时运行。很伤心。
是否可以在IBDesignable中使用CATransform3D等在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);
}
}
我已经遇到了实时预览转换的问题。好像就是不行,可能还没有实现。
有件事,只有UIView
s可以@IBDesignable。这里可以看到@UIDesignable类都无法渲染。我为示例创建了一个 Class TwistableView。
此 class 将在直立图像上放置透视图。
它运行完美,但在带有 IBDesignable 的 Storyboard 中无法实时运行。很伤心。
是否可以在IBDesignable中使用CATransform3D等在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);
}
}
我已经遇到了实时预览转换的问题。好像就是不行,可能还没有实现。
有件事,只有UIView
s可以@IBDesignable。这里可以看到@UIDesignable类都无法渲染。我为示例创建了一个 Class TwistableView。