2017-01-09 6 views
1

私はXamarinで新しいです。私は実際にビューの背景イメージを設定し、それを伸ばそうとしています。Xamarinに収まるように伸縮したビューの背景画像を設定します

画像は2048×1536ピクセルのpngです。

nfloat vpHeight = View.Bounds.Height; 
nfloat vpWidth = View.Bounds.Width; 
Console.WriteLine(vpWidth); 
Console.WriteLine(vpHeight); 

上記のコードは、私には1024x768(ランドスケープの位置)です。

var img = UIImage.FromFile("pages/p1.png"); 
UIImageView imgView = new UIImageView(img); 
imgView.ContentMode = UIViewContentMode.ScaleAspectFit; 

var prevPage = new UIView() 
{ 
    Frame = new CoreGraphics.CGRect(0, 0, vpWidth, vpHeight) 
}; 
prevPage.Add(imgView); 

これは、私は背景を設定したコードですが、結果は怒鳴るだけの画像のように、xとyの画像のちょうど半分である:

enter image description here

だから、どのようにビューの幅と高さに合わせてイメージを作成しますか?

ty !!

答えて

3

私はそうのような背景としてUIImageViewを作成します。

var img = UIImage.FromFile("pages/p1.png"); 
UIImageView imgView = new UIImageView(img); 
imgView.ContentMode = UIViewContentMode.ScaleAspectFit; 

、あなたが使用しているものは何でもビューにこれを追加します。

ContentModeがそうのように使用することができます。 enter image description here

更新 私はそうのようprevPageにそれを追加します。

var prevPage = new UIView() 
{ 
    Frame = new CoreGraphics.CGRect(0, 0, vpWidth, vpHeight) 
}; 

var img = UIImage.FromFile("pages/p1.png"); 
UIImageView imgView = new UIImageView(new CGRect(0,0,vpWidth,vpHeight)); 
imgView.Image = img; 
imgView.ContentMode = UIViewContentMode.ScaleAspectFit; // or ScaleAspectFill 

prevPage.Add(imgView); 

はまた、その価値の位置にView.Boundsを使用していることを指摘ビューはちょっとしたものです。さまざまなデバイスや向きで問題が発生するので、私はAutolayoutを見ていきます。これらは、Autolayoutのチュートリアルであり、ネイティブコードかもしれませんが、コードではなくビューの関係を探しています。

Raywenderlich tutorial

Other Tutorial

自動レイアウトを持つ任意ちゃったごめんなさいはちょうど別の質問をします。

+0

はスローダウン!タイ!ビューの背景としてコードを設定する方法は?私は実際にしようとしている:\t \t \tするvar prevPage =新しいUIViewのを() \t \t \t { \t \t \t \tフレーム=新しいCoreGraphics.CGRect(0、0、vpWidth、vpHeight)、 \t \t \t \t BackgroundColorを= imgView \t \t \t}; - しかし、これは動作していません。 –

+0

Ty、Ian、でも初期のものと全く同じ結果が得られます。私はこのスレッドの初めに見ることができるように私のコードスニペットを編集し、そこにあなたのコードを正確に配置しました。 –

+0

私はコードを少し更新しました。imgを使ってイメージビューを設定するとそのサイズのビューになりますので、追加するビューのサイズに合わせて設定しました。それはそれを修正する必要があります、私はまだあなたができるならautolayoutを見てみましょう。 –

0

実際にパターンを使用していない限り、FromPatternImageから離れることをおすすめします。最低のメモリ消費量と最高のUIのパフォーマンスを得るために

が、これは私が何をすべきかです:

第一)ビューのサイズに合わせて画像のコンテキストを使用して画像のサイズを変更:

UIGraphics.BeginImageContext(View.Frame.Size); 
UIImage.FromBundle("bg.jpg").Draw(View.Bounds); 
var bgImage = UIGraphics.GetImageFromCurrentImageContext(); 
UIGraphics.EndImageContext(); 

第二) UIImageViewにリサイズした画像を表示し、最低のZオーダーに送信:

var uiImageView = new UIImageView(View.Frame); 
uiImageView.Image = bgImage; 
View.AddSubview(uiImageView); 
View.SendSubviewToBack(uiImageView); 
関連する問題