Я пытаюсь удалить исчезающую анимацию из CATiledLayer
.
Установка CATiledLayer.FadeDuration
статическое свойство не работает и не должно, согласно этому закрытому отчету об ошибке: https://bugzilla.novell.com/show_bug.cgi?id=648993
Предлагаемое решение в Objective-C заключается в создании подкласса CATiledLayer
: Как изменить iphone CATiledLayer fadeDuration? . Я реализовал это в MonoTouch, но в представлении ничего не рисуется, хотя DrawInContext
вызывается, как и ожидалось.
Полный код для воспроизведения проблемы приведен ниже. Как только убираю [Export("fadeDuration")]
все работает (но с анимацией).
Заранее спасибо за любую помощь.
using System;
using System.Drawing;
using MonoTouch.CoreAnimation;
using MonoTouch.UIKit;
using MonoTouch.Foundation;
using MonoTouch.ObjCRuntime;
[Register("NoFadeTiledLayer")]
public class NoFadeTiledLayer : CATiledLayer {
public NoFadeTiledLayer () : base() {}
public NoFadeTiledLayer (IntPtr handle) : base(handle) {}
public override void DrawInContext (MonoTouch.CoreGraphics.CGContext ctx) {
// This is being called everytime
base.DrawInContext (ctx);
}
[Export("fadeDuration")]
public static new double FadeDuration () {
return 0;
}
}
public class ContentView : UIView {
[Export("layerClass")]
public static Class LayerClass () {
return new Class (typeof(NoFadeTiledLayer));
}
public override void Draw (RectangleF rect) {
DrawString ("Lorem ipsum", rect, UIFont.SystemFontOfSize (15));
}
}
[Register("AppDelegate")]
public class AppDelegate : UIApplicationDelegate {
static void Main (string[] args) {
UIApplication.Main (args, null, "AppDelegate");
}
public override bool FinishedLaunching (UIApplication app, NSDictionary options) {
var window = new UIWindow (UIScreen.MainScreen.ApplicationFrame);
window.BackgroundColor = UIColor.Green;
var view = new ContentView ();
view.BackgroundColor = UIColor.White;
view.Frame = window.Bounds;
window.AddSubview (view);
window.MakeKeyAndVisible ();
return true;
}
}