UIView改变图像的大小?

时间:2013-04-29 07:51:20

标签: objective-c

我正在尝试将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?

3 个答案:

答案 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的大小;)