ios - 如何在ios中分解出3个自定义uiView?

标签 ios swift uiview

我有以下用户界面

enter image description here

我想重构重复 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 的名称。

enter image description here

在这里,您为所有子类化的 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/

相关文章:

ios - 为什么当我隐藏图像时状态栏会向后滑动 20 点?

ios - 添加 WkWebView 约束

iOS - 在运行时获取使用 Interface Builder 创建的 UIView 框架

ios - 执行自定义 segue 时调用不平衡

ios - 如何使用 Fabric SDK 在 Swift iOS 应用程序中强制崩溃?

iphone - 在 UITextView 中垂直居中文本

ios - Quickblox iOS - 消息未读

swift - 在 Swift 中使用 Objective C/C

iphone - 如果drawRect : is overridden,子类UIView显示黑色背景

ios - 在封闭的 TextView 中使用动态字体自动调整 View 大小