所以,我正在尝试从图像制作日历。
图像的分辨率高于屏幕,所以我考虑将图像加载到更大的视图,添加所有内容(作为子视图),调整视图大小以适合屏幕显示用户,然后如果他决定保存图像,再次将其调整为更大的尺寸并保存。 (它主要按我的意图工作)。
我遇到的问题是我添加到ImageView的子视图不会调整大小。
将图像加载到我的ImageView并启用AutoresizesSubviews:
[self.backgroundImageView setImage:backgroundImage_];
[self.backgroundView setAutoresizesSubviews:YES];
在其上添加UILabel:
UILabel *calendarLabel = [[UILabel alloc] initWithFrame:CGRectMake(screenWidth_ * 0.1, 0, screenWidth_ * 0.8, screenHeight_ * 0.15)];
[calendarLabel setText:@"Calendar"];
[calendarLabel setTextColor:[UIColor whiteColor]];
[calendarLabel setTextAlignment:NSTextAlignmentCenter];
[calendarLabel setBackgroundColor:[UIColor clearColor]];
[self.backgroundImageView addSubview:calendarLabel];
保存大小应调整为:
savedRect_ = self.backgroundView.frame;
调整imageview的大小(实际调整imageview的父级,因为imageView占据了整个视图):
[self.backgroundView setFrame:savedRect_];
现在我不知道为什么这不符合我的预期。
PS:做了一些测试,结果发现它与编程添加的视图稍有不同,然后添加了IB。我觉得它与AutoresizingMask有关。
进行了一些研究,我想我必须使一切变得灵活(它可以在顶部,底部,右侧和左侧增加宽度,高度,尺寸),但它仍然不起作用。如果我启用所有6,则视图不会移动。
有人可以告诉我我需要制作什么样的设置,以便视图与父视图保持相同的位置吗?
答案 0 :(得分:2)
好的,事实证明这是一个简单的解决方案,正如我所料......
我尝试分别应用每个面膜:
[calendarLabel setAutoresizingMask:UIViewAutoresizingFlexibleLeftMargin];
[calendarLabel setAutoresizingMask:UIViewAutoresizingFlexibleWidth];
....
而不是:
[calendarLabel setAutoresizingMask:UIViewAutoresizingFlexibleLeftMargin|UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleRightMargin|UIViewAutoresizingFlexibleTopMargin|UIViewAutoresizingFlexibleBottomMargin];