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 、、、 CAReplicatorLayerCAScrollLayer 、、 CATiledLayerCAShapeLayerCATextLayerCATransformLayer 、 和 T:CoreAnimation.QCCompositionLayer。 CAGradientLayer
圖層內容
有三種方式可將內容提供給圖層:子類別化圖層類別,以及覆寫繪製方法,使用圖層委派來實作繪圖,或將靜態影像指派給圖層。
若要使用靜態影像或從其中一種轉譯方法設定圖層的內容,應用程式開發人員必須將 指派 CGImage 給 Contents 屬性。 針對靜態內容,他們只能指派這個屬性,而變更將會直接反映。
依子類別化 CALayer 的內容
如果您選擇子類別 CALayer 類別,則可以設定 方法的子類別 Display()Contents ,或者您可以覆寫 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:」) ] 屬性標注。 當您這樣做時,也應該覆寫 ,因為如果有任何人存取 PresentationLayer 屬性,則應該覆寫 Clone(CALayer) 這兩個複本,以視需要建立圖層狀態複本,以回應建立物件階層的 CoreAnimation。
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 的預設圖層類別,您可以覆寫 *方法。
建構函式
CALayer() |
預設建構函式,這個建構函式會初始化這個類別的新實例,不含任何參數。 |
CALayer(CALayer) |
這個方法必須由衍生類別實作,才能製作原始圖層的複本。 |
CALayer(IntPtr) |
建立 Unmanaged 物件的 Managed 標記法時所使用的建構函式;由執行時間呼叫。 |
CALayer(NSCoder) |
從儲存在 unarchiver 物件中的資料初始化 物件的建構函式。 |
CALayer(NSObjectFlag) |
在衍生類別上呼叫的建構函式,以略過初始化,並只配置 物件。 |
屬性
Actions |
NSDictionary 包含圖層的動作。 |
AffineTransform |
圖層 的 Transform affine 版本。 |
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[]) |
設定適用于 |