如何从 ViewController 更改自定义 UIView 的变量
How to change variable of custom UIView from ViewController
我创建了一个自定义 UIView (ProgressView),我在其中绘制了一个通过 StyleKit 从 PaintCode 导入的形状。
下面是代码。我在我的自定义 UIView 中声明了实例变量 属性,当我尝试从 ViewController 更改 属性 时,它不起作用。
ProgressView.h
#import <UIKit/UIKit.h>
@interface ProogressView : UIView
@property (nonatomic) float daysFraction;
@property (nonatomic) float pagesFraction;
@end
ProgressView.m
#import "ProgressView.h"
#import "StyleKitName.h"
#import "ViewController.h"
@implementation ProgressView
@synthesize daysFraction = _daysFraction;
@synthesize pagesFraction = _pagesFraction;
- (void)drawRect:(CGRect)rect {
// Drawing code
[StyleKitName drawCanvas1WithDaysFraction:self.daysFraction pageFraction:self.pagesFraction];
}
-(void)awakeFromNib {
[super awakeFromNib];
self.pagesFraction = 0;
self.daysFraction = 0;
}
ViewController.h
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
@end
*ViewController.m**
#import "ViewController.h"
#import "ButtonAnimation.h"
#import "ProgressView.h"
#import "StyleKitName.h"
@interface ViewController ()
@property (weak, nonatomic) IBOutlet ButtonAnimation *buttonView;
@property (weak, nonatomic) IBOutlet UIButton *actionButton;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
ProgressView *new =[[ ProgressView alloc]init];
new.daysFraction = 0.7f; // here I am setting value to variable in custom view ProgressView but not working.
}
- (IBAction)animateTheButton:(id)sender {
self.buttonView.layer.backgroundColor = [UIColor clearColor].CGColor;
[self.buttonView addErrorAnimation];
}
@end
您需要将此视图添加到 UIViewController
的视图中:
[self.view addSubview:progressView];
后面还要设置边框。例如
[progressView setFrame:self.view.bounds];
您可以在 viewDid/WillLayoutSubviews 方法中执行此操作以在旋转时更改它/window 调整大小事件。
顺便说一句,不要将您的观点命名为 new
,这太可怕了。这样的名字连是什么变量都看不出来
我创建了一个自定义 UIView (ProgressView),我在其中绘制了一个通过 StyleKit 从 PaintCode 导入的形状。
下面是代码。我在我的自定义 UIView 中声明了实例变量 属性,当我尝试从 ViewController 更改 属性 时,它不起作用。
ProgressView.h
#import <UIKit/UIKit.h>
@interface ProogressView : UIView
@property (nonatomic) float daysFraction;
@property (nonatomic) float pagesFraction;
@end
ProgressView.m
#import "ProgressView.h"
#import "StyleKitName.h"
#import "ViewController.h"
@implementation ProgressView
@synthesize daysFraction = _daysFraction;
@synthesize pagesFraction = _pagesFraction;
- (void)drawRect:(CGRect)rect {
// Drawing code
[StyleKitName drawCanvas1WithDaysFraction:self.daysFraction pageFraction:self.pagesFraction];
}
-(void)awakeFromNib {
[super awakeFromNib];
self.pagesFraction = 0;
self.daysFraction = 0;
}
ViewController.h
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
@end
*ViewController.m**
#import "ViewController.h"
#import "ButtonAnimation.h"
#import "ProgressView.h"
#import "StyleKitName.h"
@interface ViewController ()
@property (weak, nonatomic) IBOutlet ButtonAnimation *buttonView;
@property (weak, nonatomic) IBOutlet UIButton *actionButton;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
ProgressView *new =[[ ProgressView alloc]init];
new.daysFraction = 0.7f; // here I am setting value to variable in custom view ProgressView but not working.
}
- (IBAction)animateTheButton:(id)sender {
self.buttonView.layer.backgroundColor = [UIColor clearColor].CGColor;
[self.buttonView addErrorAnimation];
}
@end
您需要将此视图添加到 UIViewController
的视图中:
[self.view addSubview:progressView];
后面还要设置边框。例如
[progressView setFrame:self.view.bounds];
您可以在 viewDid/WillLayoutSubviews 方法中执行此操作以在旋转时更改它/window 调整大小事件。
顺便说一句,不要将您的观点命名为 new
,这太可怕了。这样的名字连是什么变量都看不出来