我正在尝试将UIImage
添加到UIView
。
图像完全是视图的大小 - 我定义了视图rect。
不知何故,我看到图像显示更宽,更高(拉伸)。
为什么我的视图会改变图像大小?
UIImage *strip=[UIImage imageNamed:@"albumStrip.png"];
UIImageView *imageView=[[UIImageView alloc]initWithImage:strip];
UIView * aView = [ [UIView alloc] initWithFrame:CGRectMake(0.03*winSize.width, 0.85*winSize.height , 0.95*winSize.width, winSize.width/10) ];
aView.backgroundColor = [UIColor whiteColor];
aView.tag = 31000;
aView.layer.cornerRadius=1;
[aView addSubview:imageView];
编辑: 我可以看到我的图像是640x960。是否有可能对于iPhone4而言UIImage不知道如何接受并将其除以因子2?
答案 0 :(得分:3)
尝试设置UIImageView的ContentMode(http://developer.apple.com/library/ios/#documentation/uikit/reference/UIImageView_Class/Reference/Reference.html)
imageView.contentMode = UIViewContentModeScaleAspectFit;
答案 1 :(得分:2)
使用
imageView.layer.masksToBounds = YES;
这将限制图像变得更宽更高
如果masksToBounds属性设置为YES,则图层中任何超出其边界的子图层都将被剪切到这些边界。在这种情况下,将层视为其子层的窗口;窗口边缘以外的任何东西都不可见。当masksToBounds为NO时,不会发生剪切,并且任何延伸到图层边界外的子图层都将完整可见(只要它们不会超出任何启用了屏蔽的超级图层的边缘)。
答案 2 :(得分:1)
当然,您的图像会被拉伸,无法在您的视图中显示。 因为它的框架比UIView的尺寸大很多。 您应该将UIImageView的框架设置为与UIView相同的大小,将其添加为子视图:
UIImage *strip=[UIImage imageNamed:@"albumStrip.png"];
CGRect frame = CGRectMake(0.03*winSize.width, 0.85*winSize.height , 0.95*winSize.width, winSize.width/10);
// create the uiimageView with the same frame size as its parentView.
UIImageView *imageView=[[UIImageView alloc] initWithFrame:frame];
// set the image
imageView.image = strip;
// create the view with the same frame
UIView * aView = [ [UIView alloc] initWithFrame:frame];
aView.backgroundColor = [UIColor whiteColor];
aView.tag = 31000;
aView.layer.cornerRadius=1;
[aView addSubview:imageView];
当然,如果你可以缩小uiimageview的大小;)