我有以下用户界面
我想重构重复 3 次的自定义 View 。
这意味着当我更改自定义 View 的颜色时,所有 3 个实例都将相应更改为具有相同的颜色。在 android 中,我将通过将自定义 View xml 提及到更大的布局 xml 来添加它
在 iOS 中如何实现? 如何仅以编程方式注入(inject)不同的内容(图像和文本)?
最佳答案
在您的情况下,创建与此类似的 UIView
子类:
//.h file
#import <UIKit/UIKit.h>
@interface ImageHolderView : UIView
@property (nonatomic, strong) IBOutlet UIImageView *imgView;
@end
//.m file
#import "ImageHolderView.h"
@implementation ImageHolderView
- (id)initWithCoder:(NSCoder *)aDecoder {
if ((self = [super initWithCoder:aDecoder])) {
}
return self;
}
-(void)layoutSubviews{
[super layoutSubviews];
[self setBackgroundColor:[UIColor greenColor]];
}
@end
您将每个 UIView
的文件所有者命名为子类 UIVIew
的名称。
在这里,您为所有子类化的 UIView
设置相同的背景颜色。
要在 UIView
中设置单个图像,您可以在 UIViewController
中执行以下操作:
#import "ViewController.h"
#import "ImageHolderView.h"
@interface ViewController ()
@property (nonatomic, strong) IBOutlet ImageHolderView *imgHOlder1;
@property (nonatomic, strong) IBOutlet ImageHolderView *imgHOlder2;
@property (nonatomic, strong)IBOutlet ImageHolderView *imgHOlder3;
@end
@implementation ViewController
-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
_imgHOlder1.imgView.image=[UIImage imageNamed:@"black.png"];
_imgHOlder2.imgView.image=[UIImage imageNamed:@"code.png"];
_imgHOlder3.imgView.image=[UIImage imageNamed:@"white.png"];
}
注意:背景颜色、边框颜色等常见属性可以在UIView
子类中设置,其余属性您希望每个都不同UIView
应在子类 UIView
.h 文件中声明为属性,并在 UIViewController
中设置它们。
关于ios - 如何在ios中分解出3个自定义uiView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34679696/