我正在使用Xcode在Swift中构建一个应用程序。我有一组5 images
我想用作所有视图控制器的背景。
我有10+ View Controllers
,但我希望能够重复使用这些图片。
通常我会向所有视图控制器添加图像视图,并设置图像。
我会使用公共变量来更改正在显示的图像。但是在这个应用程序中,我有很多视图控制器,创建每个图像视图效率不高。
有没有办法可以更快地完成它?感谢。
答案 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