在多个视图控制器之间共享背景图像

时间:2015-12-28 04:25:40

标签: ios xcode swift background uiimageview

我正在使用Xcode在Swift中构建一个应用程序。我有一组5 images我想用作所有视图控制器的背景。

我有10+ View Controllers,但我希望能够重复使用这些图片。

通常我会向所有视图控制器添加图像视图,并设置图像。

我会使用公共变量来更改正在显示的图像。但是在这个应用程序中,我有很多视图控制器,创建每个图像视图效率不高。

有没有办法可以更快地完成它?感谢。

3 个答案:

答案 0 :(得分:1)

使用Parent ViewController对所有10个以上的viewcontroller进行子类化。

  

@interface ViewController:ParentViewController

从ParentViewController的 viewDidLoad 调用方法。

  

// ParentViewController

     

- (void)viewDidLoad {

     

[self createBackgroundView];

     

}

在createBackgroundView中,以编程方式创建UIImageView,并使用公共变量填充它(根据您的要求)。

在ViewController的viewDidLoad中,调用[super viewDidLoad];

  

// 10个以上的ViewController中的一个

     

- (void)viewDidLoad {

     

[super viewDidLoad];

     

//其余代码

     

}

答案 1 :(得分:1)

与子类化相比,使用swift执行此操作的更好方法是,在所有视图控制器中编写扩展并调用方法。

extension UIViewController{

func setCustomBackgroundImage(){

    self.view.backgroundColor = UIColor(patternImage: UIImage(named:"yourImageFromXcAssets")!)

    //or

    let bgImage = UIImageView(image: UIImage(named: "yourImageFromXcAssets"))
    self.view.addSubview(bgImage)
}
}

并在您的视图控制器中调用它就像常规的UIViewController类方法一样,

class ViewController: UIViewController {
override func viewDidLoad() {
    super.viewDidLoad()
    self.setCustomBackgroundImage()
}

或使用Objective-C

在UIViewController上写一个类别
#import <UIKit/UIKit.h>

@interface UIViewController (customBackground)

- (void)setCustomBackgroundImage;

@end

#import "UIViewController+customBackground.h"

@implementation UIViewController (customBackground)

- (void)setCustomBackgroundImage{
    [self.view setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"yourImageFromXcAssets"]]];
    //or
    UIImageView *bgImage = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"yourImageFromXcAssets"]];
    bgImage.frame = self.view.frame;
    [self.view addSubview:bgImage];
}

@end

与Objective C的方法相同,

 [self setCustomBackgroundImage]; 

我正在使用视图控制器扩展来管理我的应用程序中的所有样式,颜色和外观。

答案 2 :(得分:0)

在类中创建一组全局变量:

class Images {
    static let image1 = UIImage(named: "image1.png")
    static let image2 = UIImage(named: "image2.png")
    static let image3 = UIImage(named: "image3.png")
    static let image4 = UIImage(named: "image4.png")
    static let image5 = UIImage(named: "image5.png")

    static var selectedImage = image1
}

现在选择图像,

Images.selectedImage = Images.image3

要设置背景,请在每个VC中设置:

imageView.image = Images.selectedImage