2014-04-16 91 views
0

我抓住了我的下一個控制器的視圖的屏幕截圖(作爲UIView對象),並希望將該屏幕截圖放置在一個小矩形內我的前任控制者的觀點(如預覽)。將較大的UIView對象放在較小的UIView對象中的最佳方式是什麼?最好的方法來放大一個較大的UIView較小的一個縮放較大的一個適合

這不起作用:

UIView *screenshot = .... // screenshot from the next controller's view 
smallViewBox.contentMode = UIViewContentModeScaleAspectFit; 
[smallViewBox addSubView:screenshot]; 

回答

1

嘗試設置較大視圖的邊界以匹配較小視圖的邊界。我剛掀起了一個簡單的例子:

UIView *largeView = [[UIView alloc] initWithFrame:CGRectMake(40, 40, 60, 60)]; 
largeView.backgroundColor = [UIColor redColor]; 
[self.view addSubview:largeView]; 

UIView *smallView = [[UIView alloc] initWithFrame:CGRectMake(50,50,40,40)]; 
smallView.backgroundColor = [UIColor greenColor]; 
[self.view addSubview:smallView]; 

largeView.bounds = smallView.bounds; 

如果您註釋掉largeView.bounds = smallView.bounds綠色(小)框將是唯一一個可見的,因爲它正在草擬了在紅盒子控制器的視圖(在這種情況下,兩個視圖是兄弟姐妹)。爲了使大圖中較小的一個的子視圖,並將其限制在較小的區域,你可以這樣做:

UIView *largeView = [[UIView alloc] initWithFrame:CGRectMake(40, 40, 60, 60)]; 
largeView.backgroundColor = [UIColor redColor]; 

UIView *smallView = [[UIView alloc] initWithFrame:CGRectMake(50,50,40,40)]; 
smallView.backgroundColor = [UIColor greenColor]; 
[self.view addSubview:smallView]; 

largeView.frame = CGRectMake(0, 0, smallView.bounds.size.width, smallView.bounds.size.height); 
[smallView addSubview:largeView]; 

這將導致更大的視圖的紅色可見 - 包括綠色小視圖的背景。在這種情況下,大視野是小視野的一個孩子,佔據了整個地區。

+0

感謝您的詳細解答 – Nihat

1

您可以設置就可以了尺度變換。

screenshot.transform = CGAffineTransformMakeScale(0.5, 0.5); 
+0

Karah,你的回答是正確的,因爲它縮放UIView,但是,當我將它添加到較小的視圖時,它出現在下面的某個地方。我想我需要一些小裝備才能讓你的版本工作。 GWhite的回答完美無瑕,所以我接受了他的回答,但給了你一個正確的答案。謝謝 – Nihat

+0

讚賞。我同意GWhite的回答更準確。使用縮放轉換將需要您根據UIView進行一些數學運算。 – joels

+0

實際上,我使用變換工作,我在保持寬高比的同時精確縮放了它。我只需要將截圖的來源更改爲(0,0)。所以,你的作品也是如此。再次感謝 – Nihat

相關問題