2

我正在尝试添加UIImageUIView. 图像完全符合视图的大小 - 正如我定义的视图 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 ?

4

3 回答 3

3

尝试设置 UIImageView 的 ContentMode ( http://developer.apple.com/library/ios/#documentation/uikit/reference/UIImageView_Class/Reference/Reference.html )

imageView.contentMode = UIViewContentModeScaleAspectFit;

于 2013-04-29T07:57:15.077 回答
2

利用

imageView.layer.masksToBounds = YES; 这将限制图像宽高

如果将 maskToBounds 属性设置为 YES,则图层的任何延伸到其边界之外的子图层都将被剪裁到这些边界。在这种情况下,将图层视为其子图层的窗口;窗口边缘之外的任何东西都将不可见。当 maskToBounds 为 NO 时,不会发生剪切,并且任何延伸到层边界之外的子层都将完全可见(只要它们不超出任何启用了遮罩的超级层的边缘)。

于 2013-04-29T07:54:49.003 回答
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 的大小更小;)

于 2013-04-29T09:51:06.420 回答