2012-03-20 2 views
2

Я пытаюсь создать заставку для MonoTouch, которая исчезает из Default.png приложения в течение короткого периода времени.MonaTouch splash fader

Это то, что я до сих пор в AppDelegate,

public override bool FinishedLaunching (UIApplication app, NSDictionary options) 
{ 
    window = new UIWindow (UIScreen.MainScreen.Bounds); 
    viewController = new App1ViewController(); 
    navController = new UINavigationController(viewController); 

    UIImageView splash = new UIImageView(window.Bounds); 
    splash.Image = UIImage.FromFile("Default.png"); 
    splash.Alpha = 1.0f; 

    window.AddSubview(splash); 
    UIView.Animate(5, 
    delegate 
    { 
     splash.Alpha = 0.0f; 
    }, 
    delegate 
    { 
     Console.WriteLine("Removed."); 
     splash.RemoveFromSuperview(); 
     window.RootViewController = navController; 
    }); 
    window.MakeKeyAndVisible(); 

    return true; 
} 

Но до сих пор она не работает/показать ничего. Кроме того, есть ли событие, чтобы получить финиш анимации, поэтому я могу удалить представление? Правильно ли это?

PS У меня уже есть файлы изображений в корневой папке приложения и помечены как содержимое. Они просто недостаточно длительны при загрузке приложения.

ответ

2

Изменены несколько имен переменных, но я надеюсь, что это помогает ...

public override bool FinishedLaunching (UIApplication app, NSDictionary options) 
    { 
     window = new UIWindow (UIScreen.MainScreen.Bounds); 

     UIImageView splash = new UIImageView(window.Bounds); 
     splash.Image = UIImage.FromFile("Default.png"); 

     var vc = new UIViewController(); 
     var nav = new UINavigationController(vc); 

     window.AddSubview(splash); 
     window.AddSubview(nav.View); 
     window.BringSubviewToFront(splash); 
     window.MakeKeyAndVisible(); 

     UIView.Animate(5, 
     delegate 
     { 
      splash.Alpha = 0f; 
     }, 
     delegate 
     { 
      Console.WriteLine("Removed."); 
     window.RootViewController = nav; 
      splash.RemoveFromSuperview(); 

     }); 

     return true; 
    } 
+0

Пожалуйста, скорее используйте UIImage.FromBundle вместо FromFile, поэтому ваше изображение по умолчанию @ 2x будет выбрано для более высокого разрешения. – Dylan

+0

Спасибо, должен был принять этот ответ некоторое время назад. Он отлично работает. –

+0

Я всегда использовал UIImage.FromFile, и мой файл @ 2x загружается. – kwcto

0

Что такое App.AppFile()?

Вы должны просто использовать UIImage.FromFile("Default.png"), если он находится в корне вашего приложения.

iOS также будет обрабатывать вещи @ 2x для вас.

+0

App утилита класс I использовать во всех моих программах, у него есть методы, упрощающие методы - в этом случае я новичок в MonoTouch, и он нигде не объясняется в корневых файлах приложений. Я добавлю к своему сообщению полный базовый класс, который я использую, и посмотрим, имеет ли он смысл - я знал, что кто-то спросит ... –

+0

Просто переключитесь на 'UIImage.FromFile (« Default.png »)' – jonathanpeppers

+0

ссылка на него: http://pastebin.com/ruQyRcF2 –

0

вызова этой функции от FinishedLaunching надеется, так что ваша задача получить решить с помощью этого кода

public void LaunchSpinner() 
{ 
// launch spinner for 2 secs 
ActivityIndicator objLoadView = new ActivityIndicator ("Please Wait......"); 
NSTimer.CreateScheduledTimer (TimeSpan.FromSeconds (2),() => objLoadView.StopAnimatings()); 
} 

public class ActivityIndicator : UIActivityIndicatorView 
{ 
UIAlertView _alert; 
UIActivityIndicatorView _ai =new UIActivityIndicatorView(); 
public ActivityIndicator() 
{ 

} 
public ActivityIndicator (String title) 
{ 
_alert = new UIAlertView (title, String.Empty, null, null, null); 
_ai = new UIActivityIndicatorView(); 
_ai.Frame = new System.Drawing.RectangleF (125, 50, 40, 40); 
_ai.ActivityIndicatorViewStyle = UIActivityIndicatorViewStyle.WhiteLarge; 
_alert.AddSubview (_ai); 
_ai.StartAnimating(); 
_alert.Show(); 
} 

public void StopAnimatings() 
{   
_ai.StopAnimating(); 
_alert.DismissWithClickedButtonIndex (0, true); 
_alert.Hidden = true; 
_ai.HidesWhenStopped = true;      
} 
#region IDisposable implementation 
void IDisposable.Dispose() 
{ 
_alert.DismissWithClickedButtonIndex(0, true); 
} 
#endregion 
}