目標
通過實例和圖片理解UIView的contentStretch屬性
方法
- 通過一個圖片建立一個簡單的UIImageView
- 設置它的contentStretch屬性
- 修改它的frame屬性
- 觀察
測試用的圖片:
新建一個 UIImageView:
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"grid.png"]];
保存它的一些屬性值備用
CGSize imageSize;
imageSize.width = imageView.frame.size.width;
imageSize.height = imageView.frame.size.height;
CGSize stretchSize;
stretchSize.width = 50.0;
stretchSize.height = 100.0;
水平拉伸
設置 contentStretch
屬性(一般爲 0.0 到 1.0之間):
imageView.contentStretch = CGRectMake(0.0, 0.0, stretchSize.width/imageSize.width, stretchSize.height/imageSize.height);
水平拉伸:
imageView.frame = CGRectMake(10.0, 10.0, imageSize.width*1.2, imageSize.height);
這時拉伸的區域如下:
垂直拉伸
使用同樣的 contentStretch
, 圖片被垂直拉伸:
imageView.frame = CGRectMake(0.0, 0.0, imageSize.width, imageSize.height*1.2);
這時拉伸的區域如下:
兩個方向同時拉伸:
使用下面的 contentStretch值
:
imageView.contentStretch = CGRectMake(100.0/imageSize.width, 100.0/imageSize.height, stretchSize.width/imageSize.width, stretchSize.height/imageSize.height);
水平和垂直同時拉伸:
imageView.frame = CGRectMake(0.0, 0.0, 450.0, 450.0);
實際拉伸的區域是:
不要泄露內存:
[imageView release];
結論
對於給定的 contentStretch
:
有一個“拉伸”區域:
和一個“固定”區域:
相關代碼:
https://gist.github.com/8038667a374da0f6a24d#file_content_stretch_test.m
圖片:
http://f.cl.ly/items/050w3k342y032F0E3n29/grid.png
原文地址:http://j0ris.tumblr.com/post/7345178587/uiview-contentstretch