2013-08-05 31 views
1

所以,我試圖從圖像製作日曆。目標C/Autoresizing子視圖不工作

圖像的分辨率高於屏幕,所以我想到了將圖像加載到更大的視圖,將所有內容添加到它(作爲子視圖),調整視圖大小以適應屏幕顯示用戶,然後如果他決定保存圖像,將其重新調整爲更大尺寸並保存。 (它大部分按照我的意圖工作)。

我遇到的問題是我添加到我的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佔據了誰le查看):

[self.backgroundView setFrame:savedRect_]; 

現在我不知道爲什麼這不按照我的意圖工作。

PS:做了一些測試,事實證明它是用編程方式添加的意見,然後用IB加入的影片略有不同。我有一種感覺,它與AutoresizingMask有關。

做了一些研究,我會想象我必須作出一切靈活(它可以在頂部,底部,左右兩側的寬度,高度,體量增長),但它仍然是行不通的。如果我啓用所有6,視圖不會移動。

誰能告訴我,我需要什麼設置,使這樣的意見,留在與他們的父視圖相同的位置?

+0

讓我看看我正確地理解你想要什麼:你想讓你的imageView擁有一個大的圖像,使整個屏幕的框架獨立於圖像的大小? –

+0

要麼我不明白正確,要麼不是我想要的。我想要一個與我的圖像大小相等的大視圖,在其上創建日曆,然後將該視圖(使用它的子視圖)縮小到屏幕大小,以便用戶可以看到它,如果他確實這樣做,我會將其增加回來到原始(大)尺寸並將其保存爲圖像。 (我必須進行縮小和放大,以便以更好的分辨率進行保存)。 –

+0

請向我們展示當前和期望的輸出。什麼是子視圖?標籤? –

回答

2

好了,原來是因爲我希望一個簡單的解決方案...

我試過單獨申請每個掩碼:

[calendarLabel setAutoresizingMask:UIViewAutoresizingFlexibleLeftMargin]; 
[calendarLabel setAutoresizingMask:UIViewAutoresizingFlexibleWidth]; 
.... 

相反的:

[calendarLabel setAutoresizingMask:UIViewAutoresizingFlexibleLeftMargin|UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleRightMargin|UIViewAutoresizingFlexibleTopMargin|UIViewAutoresizingFlexibleBottomMargin]; 
+0

呃,這是一個位掩碼,所以每次你設置它,所有的位都被清除或設置。它不是添加劑。 「分別設置每個掩碼」只會導致最後一條命令生效。一位已設置;其他人被清除。 – Jeff