CALayer 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
层保存呈现到屏幕中的图像。
[Foundation.Register("CALayer", true)]
public class CALayer : Foundation.NSObject, CoreAnimation.ICAMediaTiming, Foundation.INSSecureCoding, IDisposable
type CALayer = class
inherit NSObject
interface ICAMediaTiming
interface INativeObject
interface IDisposable
interface INSCoding
interface INSSecureCoding
- 继承
- 派生
- 属性
- 实现
注解
CALayers 保存呈现到屏幕中的图像内容。 它们封装位置、样式、大小和转换组件。 他们还实现了 CAMediaTiming 方法,该方法允许他们参与动画。
开发人员可以使用 CALayer 的多个子类:CAEmitterLayer、、CAGradientLayerT:CoreAnimation.CAEAGLLayer/CAOpenGLLayer、CAReplicatorLayer、CAScrollLayer、、CAShapeLayer、、 CATransformLayerCATextLayerCATiledLayer和 T:CoreAnimation.QCCompositionLayer。
层内容
可通过三种方式向层提供内容:对层类进行子类化并重写绘制方法、使用层委托实现绘图或将静态图像分配给层。
若要使用静态图像或从其中一种呈现方法设置层的内容,应用开发人员必须将 分配给 CGImageContents 属性。 对于静态内容,他们只需分配此属性,更改将直接反映。
按 CALayer 子类化的内容
如果选择对 CALayer 类进行子类化,则可以将随后需要设置 Contents 属性的方法子类Display()化,也可以重写DrawInContext(CGContext)方法,该方法提供可用于呈现到显示中的图形上下文。
// Overriding DrawInContext
public class DemoLayer : CALayer {
public override void DrawInContext (CGContext context)
{
base.DrawInContext (context);
// Fill in circle
context.SetFillColor (Color);
context.SetShadowWithColor (SizeF.Empty, 10.0f, glowColor);
context.EOFillPath();
}
}
// Overriding Display
public class DemoLayer2 : CALayer {
CGImage image = UIImage.FromBundle ("demo.png").CGImage;
public override void Display ()
{
Contents = image;
}
}
通过提供 CALayerDelegate 的内容
如果开发人员不想更改用于其 CALayer 呈现的类,而他们只需将 Delegate 属性分配给 的子类 CALayerDelegate 的实例,他们要么重写 DisplayLayer(CALayer) 必须设置 Contents 属性的方法,要么重写 DrawLayer(CALayer, CGContext) 方法并在其中提供自己的呈现代码。
// Overriding DisplayLayer
public class DemoLayerDelegate : CALayerDelegate {
CGImage image = UIImage.FromBundle ("demo.png").CGImage;
public override void DisplayLayer (CALayer layer)
{
layer.Contents = image;
}
}
// Overriding DrawLayer
public class DemoLayerDelegate2 : CALayerDelegate {
public override DrawLayer (CALayer layer, CGContext context)
{
// Fill in circle
context.SetFillColor (Color);
context.SetShadowWithColor (SizeF.Empty, 10.0f, glowColor);
context.EOFillPath();
}
}
// To use the code:
void SetupViews (UIView view, UIView view2)
{
view.Layer.Delegate = new DemoLayerDelegate ();
view2.Layer.Delegate = new DemoLayerDelegate2 ();
}
将自定义层与 UIView 或 NSViews 配合使用。
在 iOS 上,每个 UIView 都会自动有一个与之关联的 CALayer。 如果要使用其中一个 CALayer 子类作为 UIView 的后备层,需要将以下代码片段添加到类:
class MyView : UIView {
//
// This instructs the runtime that whenever a MyView is created
// that it should instantiate a CATiledLayer and assign that to the
// UIView.Layer property
//
[Export ("layerClass")]
public static Class LayerClass () {
return new Class (typeof (CATiledLayer));
}
}
如果要对 CALayer 类进行子类化,则必须提供采用 CALayer 的构造函数,并使用 [Export (“initWithLayer:”) ] 属性进行批注。 执行此操作时,还应重写 , Clone(CALayer) 因为这两个用于按需创建层状态的副本,以响应 CoreAnimation 创建对象层次结构的镜像(如果任何人访问属性 PresentationLayer )。
public class MyLayer : CALayer {
UIColor FirstColor, SecondColor;
//
// Invoked by CoreAnimation if it needs to create a copy of your layer
// with a specific state in response to the user fetching the PresentationLayer
// property
//
[Export ("initWithLayer:")]
public MyLayer (Mylayer other) : base (layer)
{
// Do nothing, since we override Clone, but we could
// just clone the data here as well if we wanted to.
}
//
// This is the constructor you would use to create your new CALayer
public MyLayer (UIColor firstColor, UIColor secondColor)
{
FirstColor = firstColor;
SecondColor = secondColor;
}
// We must copy our own state here from the original layer
public override void Clone (CALayer _other)
{
MyLayer other = (MyLayer) _other;
FirstColor = other.FirstColor;
SecondColor = other.SecondColor;
}
}
在 macOS 上,CALayers 是可选的。 若要启用它们,必须将 P:AppKit.NSView.WantsLayer 属性设置为 true。 可以通过设置 属性来更改 NSView 的层 。
在 macOS 上,若要更改用于给定 NSView 的默认层类,可以重写 M:AppKit.MakeBackingLayer* 方法。
构造函数
CALayer() |
不带参数初始化此类的新实例的默认构造函数。 |
CALayer(CALayer) |
此方法必须由派生类实现,才能创建原始层的副本。 |
CALayer(IntPtr) |
创建非托管对象的托管表示形式时使用的构造函数;由运行时调用。 |
CALayer(NSCoder) |
从 unarchiver 对象中存储的数据初始化 对象的构造函数。 |
CALayer(NSObjectFlag) |
用于调用派生类的构造函数,以跳过初始化并仅分配 对象。 |
属性
Actions |
NSDictionary 包含层的操作。 |
AffineTransform |
层 的 Transform仿射版本。 |
AllowsEdgeAntialiasing |
是否允许边缘抗锯齿。 |
AllowsGroupOpacity |
是否允许组不透明度。 |
AnchorPoint |
矩形的 Bounds 定位点。 |
AnchorPointZ |
沿 Z 轴定义的 的定位点 Bounds。 |
AnimationKeys |
与此层关联的动画的标识符。 |
AutoresizingMask |
层保存呈现到屏幕中的图像。 |
AutoresizinMask |
已过时.
层保存呈现到屏幕中的图像。 |
AutoReverses |
层保存呈现到屏幕中的图像。 |
BackgroundColor |
层的背景色。 |
BackgroundFilters |
应用于此层后面的内容的核心映像筛选器数组。 |
BeginTime |
层保存呈现到屏幕中的图像。 |
BorderColor |
层边框的颜色。 |
BorderWidth |
层边框的宽度。 |
Bounds |
层保存呈现到屏幕中的图像。 |
Class |
层保存呈现到屏幕中的图像。 (继承自 NSObject) |
ClassHandle |
此类的句柄。 |
CompositingFilter |
用于合成层及其背后的内容的核心图像筛选器。 |
Constraints |
层保存呈现到屏幕中的图像。 |
Contents |
此层的内容,作为 CGImage。 |
ContentsAreFlipped |
呈现层时,层的内容是否隐式翻转。 |
ContentsCenter |
层保存呈现到屏幕中的图像。 |
ContentsFormat |
获取层的内容格式。 |
ContentsGravity |
层保存呈现到屏幕中的图像。 |
ContentsRect |
层保存呈现到屏幕中的图像。 |
ContentsScale |
应用于层的比例因子。 |
CornerRadius |
绘制圆角时使用的半径。 |
DebugDescription |
此对象的开发人员有意义的说明。 (继承自 NSObject) |
Delegate |
充当类委托的 CoreAnimation.ICALayerDelegate 模型类的实例。 |
Description |
对象的说明,即 ToString 的 Objective-C 版本。 (继承自 NSObject) |
DoubleSided |
层在远离查看器时是否绘制其内容。 |
DrawsAsynchronously |
绘图命令是否在后台线程上延迟和异步处理。 |
Duration |
此层的动画持续时间(以秒为单位)。 |
EdgeAntialiasingMask |
层保存呈现到屏幕中的图像。 |
FillMode |
此层的填充模式,由 中的 CAFillMode值定义。 |
FilterLinear |
表示与常量 kCAFilterLinear 关联的值 |
FilterNearest |
表示与常量 kCAFilterNearest 关联的值 |
Filters |
应用于此层及其子层的内容的核心映像筛选器数组。 |
FilterTrilinear |
表示与常量 kCAFilterTrilinear 关联的值 |
Frame |
层保存呈现到屏幕中的图像。 |
GeometryFlipped |
层保存呈现到屏幕中的图像。 |
GravityBottom |
表示与常量 kCAGravityBottom 关联的值 |
GravityBottomLeft |
表示与常量 kCAGravityBottomLeft 关联的值 |
GravityBottomRight |
表示与常量 kCAGravityBottomRight 关联的值 |
GravityCenter |
表示与常量 kCAGravityCenter 关联的值 |
GravityLeft |
表示与常量 kCAGravityLeft 关联的值 |
GravityResize |
表示与常量 kCAGravityResize 关联的值 |
GravityResizeAspect |
表示与常量 kCAGravityResizeAspect 关联的值 |
GravityResizeAspectFill |
表示与常量 kCAGravityResizeAspectFill 关联的值 |
GravityRight |
表示与常量 kCAGravityRight 关联的值 |
GravityTop |
表示与常量 kCAGravityTop 关联的值 |
GravityTopLeft |
表示与常量 kCAGravityTopLeft 关联的值 |
GravityTopRight |
表示与常量 kCAGravityTopRight 关联的值 |
Handle |
处理指向非托管对象表示形式的 (指针) 。 (继承自 NSObject) |
Hidden |
层是否未显示。 |
IsDirectBinding |
层保存呈现到屏幕中的图像。 (继承自 NSObject) |
IsProxy |
层保存呈现到屏幕中的图像。 (继承自 NSObject) |
LayoutManager |
层保存呈现到屏幕中的图像。 |
MagnificationFilter |
层保存呈现到屏幕中的图像。 |
Mask |
可选层,其 alpha 通道用于屏蔽此层的内容。 |
MaskedCorners |
层保存呈现到屏幕中的图像。 |
MasksToBounds |
是否将子图层剪裁到 Bounds 此层的 。 |
MinificationFilter |
层保存呈现到屏幕中的图像。 |
MinificationFilterBias |
层保存呈现到屏幕中的图像。 |
ModelLayer |
层保存呈现到屏幕中的图像。 |
Name |
层保存呈现到屏幕中的图像。 |
NeedsDisplay |
层是否已标记为需要更新。 |
NeedsDisplayOnBoundsChange |
层保存呈现到屏幕中的图像。 |
OnOrderIn |
表示与常量 kCAOnOrderIn 关联的值 |
OnOrderOut |
表示与常量 kCAOnOrderOut 关联的值 |
Opacity |
层的透明度在 0 (透明) 到 1.0 (不透明的) 。 |
Opaque |
层及其内容是否完全不透明。 |
Position |
层在其 SuperLayer的坐标空间中的位置。 |
PresentationLayer |
层保存呈现到屏幕中的图像。 |
RasterizationScale |
层保存呈现到屏幕中的图像。 |
RepeatCount |
层保存呈现到屏幕中的图像。 |
RepeatDuration |
层保存呈现到屏幕中的图像。 |
RetainCount |
返回对象的当前 Objective-C 保留计数。 (继承自 NSObject) |
Self |
层保存呈现到屏幕中的图像。 (继承自 NSObject) |
ShadowColor |
层保存呈现到屏幕中的图像。 |
ShadowOffset |
层保存呈现到屏幕中的图像。 |
ShadowOpacity |
层保存呈现到屏幕中的图像。 |
ShadowPath |
层保存呈现到屏幕中的图像。 |
ShadowRadius |
层保存呈现到屏幕中的图像。 |
ShouldRasterize |
层保存呈现到屏幕中的图像。 |
Speed |
层保存呈现到屏幕中的图像。 |
Style |
层保存呈现到屏幕中的图像。 |
Sublayers |
层保存呈现到屏幕中的图像。 |
SublayerTransform |
层保存呈现到屏幕中的图像。 |
Superclass |
层保存呈现到屏幕中的图像。 (继承自 NSObject) |
SuperHandle |
用于表示此 NSObject 基类中方法的句柄。 (继承自 NSObject) |
SuperLayer |
层保存呈现到屏幕中的图像。 |
TimeOffset |
层保存呈现到屏幕中的图像。 |
Transform |
层保存呈现到屏幕中的图像。 |
Transition |
表示与常量 kCATransition 关联的值 |
VisibleRect |
层保存呈现到屏幕中的图像。 |
WeakDelegate |
可以响应此类型的委托协议的对象 |
Zone |
层保存呈现到屏幕中的图像。 (继承自 NSObject) |
ZPosition |
层保存呈现到屏幕中的图像。 |
方法
扩展方法
ObjectDidBeginEditing(NSObject, INSEditor) |
层保存呈现到屏幕中的图像。 |
ObjectDidEndEditing(NSObject, INSEditor) |
层保存呈现到屏幕中的图像。 |
GetValidModes(NSObject, NSFontPanel) |
层保存呈现到屏幕中的图像。 |
ValidateToolbarItem(NSObject, NSToolbarItem) |
层保存呈现到屏幕中的图像。 |
GetDebugDescription(INSObjectProtocol) |
层保存呈现到屏幕中的图像。 |
AcceptsPreviewPanelControl(NSObject, QLPreviewPanel) |
层保存呈现到屏幕中的图像。 |
BeginPreviewPanelControl(NSObject, QLPreviewPanel) |
层保存呈现到屏幕中的图像。 |
EndPreviewPanelControl(NSObject, QLPreviewPanel) |
层保存呈现到屏幕中的图像。 |
GetAccessibilityCustomRotors(NSObject) |
获取适用于 |
SetAccessibilityCustomRotors(NSObject, UIAccessibilityCustomRotor[]) |
设置适用于 |