ビューコントローラーの背景としてPNG画像を追加するために、アプリのデリゲートでこのコードを使用しようとしました:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[[self window] setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"background.png"]]];
return YES;
}
しかし、私はそれでうまくいきません... View Controllerはまだ白い背景を持っています。そのコードの何が問題になっていますか?
ViewControllerのビューの背景を設定する必要があります
ViewControllerでinit
またはviewDidLoad
:
[self.view setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"background.png"]]];
受け入れられた答えとマイケルの答えは機能しますが、適切な方法は代わりにUIImageViewを使用することです。デバイスのさまざまな画面サイズに応じて、サイズ変更、スケーリングなどをより詳細に制御できます。以下がその例です。
最初にUIImageを作成します。
UIImage *backgroundImage = [UIImage imageNamed:@"iphone_skyline3.jpg"];
次に、UIImageViewを作成します。フレームサイズを親(自分)のフレームサイズに設定します。フレームサイズはデバイスによって異なるため、これは重要です。画像サイズによってはストレッチが発生します。次に、画像をビューに割り当てます。
UIImageView *backgroundImageView=[[UIImageView alloc]initWithFrame:self.view.frame];
backgroundImageView.image=backgroundImage;
最後に、すべてのコントロールの背後にイメージを保持するには、次のようにします。画像をアプリの背景として設定する場合は重要です。
[self.view insertSubview:backgroundImageView atIndex:0];
Swiftでの使用方法は次のとおりです。
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = UIColor(patternImage: UIImage(named: "background.png"))
}
画像調整にいくつかの改良を加えた@hadaytullah回答のSwift 4バージョン:
override func viewDidLoad() {
super.viewDidLoad()
let backgroundImage = UIImage.init(named: "yourImageNameHere")
let backgroundImageView = UIImageView.init(frame: self.view.frame)
backgroundImageView.image = backgroundImage
backgroundImageView.contentMode = .scaleAspectFill
backgroundImageView.alpha = 0.1
self.view.insertSubview(backgroundImageView, at: 0)
}
Swift 3.0で使用し、xcode 8でテストした次のソリューションを検討することができます
// init and image with your pattern image
var bgUIImage : UIImage = UIImage(named: "yourIamgeName")!
let myInsets : UIEdgeInsets = UIEdgeInsetsMake(0, 0, 0, 0)
bgUIImage = bgUIImage.resizableImage(withCapInsets: myInsets)
self.view.backgroundColor = UIColor.init(patternImage:bgUIImage)
結果は次の画像になります
複数の場所で使用するUIViewControllerの拡張機能を作成することもできます
extension UIViewController {
func setBackgroundImage(imageName: String) {
let backgroundImage = UIImage(named: imageName)
let backgroundImageView = UIImageView(frame: self.view.frame)
backgroundImageView.image = backgroundImage
self.view.insertSubview(backgroundImageView, at: 0)
}
}
ViewDidLoadでは、以下を使用します。
self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"yourImageString.png"]];
または、appDelegateで実行する場合は、
[self.window setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"yourImageString.png"]]];
次に、viewDidLoadで背景を[UIColor clearColor]に設定しますか?
ビューコントローラーにtableView/collectionビューがある場合は、以下のコードが適しています。
- (void)viewDidLoad
{
[super viewDidLoad];
self.tableView.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"yourImage.png"]];
}
ストーリーボードから実行できます。
UIImageViewを追加し、属性インスペクターでImageプロパティの背景画像を設定するだけです。