開発 - iphone android 将来性




iPhoneでのアンドロイドトースト? (8)

Toastの目的コードcにこのリンクを使用できます。

http://code.google.com/p/toast-notifications-ios/source/browse/trunk/

その使用法のためのこのリンクながら

http://code.google.com/p/toast-notifications-ios/wiki/HowToUse

これは、以下のサンプルのいずれかのようになります。

[[iToast makeText:NSLocalizedString(@"The activity has been successfully saved.", @"")] show];

[[[iToast makeText:NSLocalizedString(@"The activity has been successfully saved.", @"")] 
                          setGravity:iToastGravityBottom] show];

[[[[iToast makeText:NSLocalizedString(@"Something to display a very long time", @"")] 
                  etGravity:iToastGravityBottom] setDuration:iToastDurationLong] show];

私がAndroidアプリを書くとき、私はToast機能が大好きです。 MonoTouch(C#.NET)を使用してiPhone開発でこの種のセットを取得してポップアップメッセージを忘れる方法はありますか?


あなたはUIAlertViewようなものを探していますか?



これが私のバージョンです: http://github.com/scalessec/toast : http://github.com/scalessec/toast

obj-cカテゴリとして実装されているため、UIViewのすべてのインスタンスにmakeToastメソッドが追加されているため、使用が簡単だと思います。 例えば:

[self.view makeToast:@"This is some message as toast."
            duration:3.0
            position:@"bottom"];

ちょうどあなたはアンドロイドのように乾杯するためにuilabelとuianimationで以下のコードを使うことができます。 それは2つの仕事をします1つはトーストの仕事であり、それはwordwrap IOS 7の後のリンクのテキストの長さに従ってラベルの高さを増加させます

CGRect initialFrame = CGRectMake(20, self.view.frame.size.height/2,300, 40);


NSString *message[email protected]"Toast in Iphone as in Android";
UILabel *flashLabel=[[UILabel alloc] initWithFrame:initialFrame];
flashLabel.font=[UIFont fontWithName:@"Optima-Italic" size:12.0];
flashLabel.backgroundColor=[UIColor whiteColor];
flashLabel.layer.cornerRadius=3.0f;
flashLabel.numberOfLines=0;
flashLabel.textAlignment=NSTextAlignmentCenter;

CGSize maxSize = CGSizeMake(flashLabel.frame.size.width, MAXFLOAT);

CGRect labelRect = [message boundingRectWithSize:maxSize options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:flashLabel.font} context:nil];

//adjust the label the the new height.
CGRect newFrame = flashLabel.frame;
newFrame.size.height = labelRect.size.height;
flashLabel.frame = newFrame;
flashLabel.text=message;
[self.view addSubview:flashLabel];

flashLabel.alpha=1.0;
self.view.userInteractionEnabled=FALSE;

[UIView animateWithDuration:13.0 animations:^
{
    flashLabel.alpha=0.0f;
}
completion:^(BOOL finished)
{
    self.view.userInteractionEnabled=TRUE;

    [flashLabel removeFromSuperview];
}];

ディスプレイの回転を処理するトーストクラスに少し修正を加えました。

        public void Show ()
    {
        UIButton v = UIButton.FromType (UIButtonType.Custom);
        view = v;


        UIFont font = UIFont.SystemFontOfSize (16);
        SizeF textSize = view.StringSize (text, font, new SizeF (280, 60));

        UILabel label = new UILabel (new RectangleF (0, 0, textSize.Width + 5, textSize.Height + 5));
        label.BackgroundColor = UIColor.Clear;
        label.TextColor = UIColor.White;
        label.Font = font;
        label.Text = text;
        label.Lines = 0;
        label.ShadowColor = UIColor.DarkGray;
        label.ShadowOffset = new SizeF (1, 1);


        v.Frame = new RectangleF (0, 0, textSize.Width + 10, textSize.Height + 10);
        label.Center = new PointF (v.Frame.Size.Width / 2, v.Frame.Height / 2);
        v.AddSubview (label);

        v.BackgroundColor = UIColor.FromRGBA (0, 0, 0, 0.7f);
        v.Layer.CornerRadius = 5;

        UIWindow window = UIApplication.SharedApplication.Windows[0];

        PointF point = new PointF (window.Frame.Size.Width / 2, window.Frame.Size.Height / 2);

        if (theSettings.Gravity == ToastGravity.Top)
        {
            point = new PointF (window.Frame.Size.Width / 2, 45);
        }
        else if (theSettings.Gravity == ToastGravity.Bottom)
        {
            point = new PointF (window.Frame.Size.Width / 2, window.Frame.Size.Height - 45);
        }
        else if (theSettings.Gravity == ToastGravity.Center)
        {
            point = new PointF (window.Frame.Size.Width / 2, window.Frame.Size.Height / 2);
        }
        else
        {
            point = theSettings.Position;
        }

        point = new PointF (point.X + offsetLeft, point.Y + offsetTop);
        v.Center = point;
        //handle screen rotation
        float orientation=0;

        switch(UIApplication.SharedApplication.StatusBarOrientation)
        {
        case UIInterfaceOrientation.LandscapeLeft:
            orientation=-90;
            break;
        case UIInterfaceOrientation.LandscapeRight:
            orientation=90;
            break;
        case UIInterfaceOrientation.PortraitUpsideDown:
            orientation=180;
            break;
        }
        v.Transform=CGAffineTransform.MakeRotation ((float)(orientation / 180f * Math.Pi));
        window.AddSubview (v);
        v.AllTouchEvents += delegate { HideToast (); };

        NSTimer.CreateScheduledTimer (theSettings.DurationSeconds, HideToast);

    }

私は、iOSのトーストスタイルのアラートを実行するためのクラスを使用して、github上に新しいリポジトリを作成しました。 私はcode.google.com上のものが好きではありませんでした、それはきちんと回転しませんでした、そして、かわいくありませんでした。

https://github.com/esilverberg/ios-toast

人々を楽しんでください。


私はジョンの答えを次のように修正した。

Toast.h

@interface Toast : NSObject

+ (void)toast:(NSString *)message
             :(UIView *) view
             :(int)delay;

@end

Toast.m

#import "Toast.h"

@interface Toast ()

@end

@implementation Toast

+ (void)toast:(NSString *)message
             :(UIView *) view
             :(int)delay
{
    CGRect initialFrame = CGRectMake(10, view.frame.size.height/2, 300, 40);
    UILabel *flashLabel=[[UILabel alloc] initWithFrame:initialFrame];
    flashLabel.font=[UIFont fontWithName:@"Optima-Italic" size:19.0];
    flashLabel.backgroundColor=[UIColor whiteColor];
    flashLabel.layer.cornerRadius=9.0f;
    flashLabel.clipsToBounds = YES;
    flashLabel.numberOfLines=3;
    flashLabel.textAlignment=NSTextAlignmentCenter;
    CGSize maxSize = CGSizeMake(flashLabel.frame.size.width, MAXFLOAT);
    CGRect labelRect = [message boundingRectWithSize:maxSize
                                             options:NSStringDrawingUsesLineFragmentOrigin
                                          attributes:@{NSFontAttributeName:flashLabel.font}
                                             context:nil];

    //adjust the label the the new height.
    CGRect newFrame = flashLabel.frame;
    newFrame.size.height = labelRect.size.height * 2;
    flashLabel.frame = newFrame;
    flashLabel.text=message;
    [view addSubview:flashLabel];
    flashLabel.alpha=1.0;
    view.userInteractionEnabled=FALSE;

    [UIView animateWithDuration:delay animations:^
    {
        flashLabel.alpha=0.0f;
    }

    completion:^(BOOL finished)
    {
        view.userInteractionEnabled=TRUE;
        [flashLabel removeFromSuperview];
    }];
}

@end




xamarin.ios