我是ios应用程序的新手。我的主视图有3个视图。这些视图代表一个图表。任何时候用户打开主视图(我的意思是每次调用viewDidLoad)我需要测量一些数字并根据它们绘制这些图形。我只需要改变图形的宽度!但是我尝试手动将大小添加到其中一个图形但是根本没有改变!任何建议将不胜感激。
如您所见,我在这里添加了100
self.timerGraph.frame.size.width+100
self.timerGraph.frame = CGRectMake(self.timerGraph.frame.origin.x,self.timerGraph.frame.origin.y,self.timerGraph.frame.size.width+100,self.timerGraph.frame.size.height);
但它没有受到影响!
编辑:我用过这个,但Ben正在打印,但宽度没有改变!!
- (void)viewWillAppear:(BOOL)try{
NSLog(@"Ben");
self.bestGraph.frame = CGRectMake(self.bestGraph.frame.origin.x,self.timerGraph.frame.origin.y,self.timerGraph.frame.size.width+130,self.timerGraph.frame.size.height);
}
编辑:我删除了一些实现部分以缩短它。
- (void)viewDidLoad
{
NSNumber *min = [NSNumber numberWithInt:0];
NSNumber *max = [NSNumber numberWithInt:0];
NSNumber *avg = [NSNumber numberWithInt:0];
NSNumber *total = [NSNumber numberWithInt:0];
[super viewDidLoad];
bool first = true;
//Find the worst and best and average graph
for(int i=0;i<tmp.numberOfTimes;i++)
{
//LTTime *myTime = [[LTTime alloc] init];
LTTime *tmpTime = [tmp timeAtIndex:i];
if(first)
{
first = false;
min = tmpTime.time;
}
if(min>tmpTime.time)
{
min = tmpTime.time;
}
if(max<tmpTime.time)
{
max = tmpTime.time;
}
total = @( [tmpTime.time intValue] + [total intValue] );
}
avg = @( [total floatValue]/tmp.numberOfTimes);
self.bestGraph.frame = CGRectMake(self.bestGraph.frame.origin.x,self.timerGraph.frame.origin.y,self.timerGraph.frame.size.width+130,self.timerGraph.frame.size.height);
}
观点的定义:
@property (weak, nonatomic) IBOutlet UIView *bestGraph;
答案 0 :(得分:1)
尝试将代码放入
- (void)viewWillLayoutSubviews
方法
答案 1 :(得分:0)
根据你的项目,我不知道这是否属实。
在viewWillAppear
而不是viewDidLoad
中尝试使用相同的代码。
viewDidLoad
只会调用一次。
希望它对你有所帮助。谢谢:))
答案 2 :(得分:0)
问题是ios autolayout被勾选,所以我无法以这种方式添加。所以我决定创建自己的视图,只要它ViewWillAppear
从视图中删除所有内容并再次添加它们(因为视图更改频繁)。
我认为学习如何手工创建GUI元素而不是IButton会更好。