web-dev-qa-db-ja.com

View Controllerに背景画像を追加する

ビューコントローラーの背景としてPNG画像を追加するために、アプリのデリゲートでこのコードを使用しようとしました:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [[self window] setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"background.png"]]];

    return YES;
}

しかし、私はそれでうまくいきません... View Controllerはまだ白い背景を持っています。そのコードの何が問題になっていますか?

13
Saint Robson

ViewControllerのビューの背景を設定する必要があります

ViewControllerでinitまたはviewDidLoad

[self.view setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"background.png"]]];
24
Tarek Hallak

受け入れられた答えとマイケルの答えは機能しますが、適切な方法は代わりに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];
36
hadaytullah

Swiftでの使用方法は次のとおりです。

override func viewDidLoad() {
    super.viewDidLoad()
    self.view.backgroundColor = UIColor(patternImage: UIImage(named: "background.png"))
}
7
Esqarrouth

画像調整にいくつかの改良を加えた@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)
}
5
Paco Cardenal

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)

結果は次の画像になります

enter image description here

1
Amr Angry

複数の場所で使用する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)
    }
}
1
Enes Karaosman

ViewDidLoadでは、以下を使用します。

self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"yourImageString.png"]];

または、appDelegateで実行する場合は、

[self.window setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"yourImageString.png"]]];

次に、viewDidLoadで背景を[UIColor clearColor]に設定しますか?

1
Michael M

ビューコントローラーにtableView/collectionビューがある場合は、以下のコードが適しています。

 - (void)viewDidLoad
{
   [super viewDidLoad];

   self.tableView.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"yourImage.png"]];
}
1
umakanta

ストーリーボードから実行できます。

UIImageViewを追加し、属性インスペクターでImageプロパティの背景画像を設定するだけです。

0
Boris Nikolic