防止在 iOS 的 Scrollview 中拉伸图像

Posted

技术标签:

【中文标题】防止在 iOS 的 Scrollview 中拉伸图像【英文标题】:Prevent Stretching of image in Scrollview in iOS 【发布时间】:2013-04-03 03:07:02 【问题描述】:

我正在向滚动视图添加一些按钮。我正在用图像设置按钮的背景。当您看到输出时,图像似乎被拉伸了。我想避免这种情况。

所以我试过这个:

创建了一个自定义视图,用于处理图像并使该图像远离边缘。

这样做是为了自动调整大小:

我的代码如下所示:

for (int counter = 0; counter < imageCount; counter++) 

        NSString *imageName = [NSString stringWithFormat:@"%@_img0%d.jpg",mRoutePointId,counter+1];
        UIImage *infoImage = [UIImage imageNamed:imageName];

        GalleryImage *galleryItem = [[GalleryImage alloc] initWithImage:infoImage];

        UIButton *infoImageButton = [[UIButton alloc] initWithFrame:CGRectMake(xOffset, 0, infoImagesScrollView.frame.size.width, infoImagesScrollView.frame.size.height)];
        infoImageButton.tag = counter;
        [infoImageButton setImage:galleryItem.galleryImage forState:UIControlStateNormal];
        [infoImageButton setImage:galleryItem.galleryImage forState:UIControlStateHighlighted];
        [infoImageButton addTarget:self action:@selector(infoImageButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
        [infoImageButton setTitle:[NSString stringWithFormat:@"%@_img0%d.jpg",mRoutePointId,counter+1] forState:UIControlStateApplication];
        [infoImagesScrollView addSubview:infoImageButton];
        xOffset+=infoImagesScrollView.frame.size.width;
    

CustomView.m

#import "GalleryImage.h"

@implementation GalleryImage

@synthesize galleryImage;

- (id)initWithFrame:(CGRect)frame

    self = [super initWithFrame:frame];
    if (self) 
        // Initialization code
    
    return self;

- (id)initWithImage:(UIImage*) image

    self = [super init];
    if (self) 
//        galleryImageView = nil;
        galleryImage = image;
    
    return self;


-(void)awakeFromNib

    [galleryImageView setImage:galleryImage];

需要一些关于如何确保图像在添加到按钮时不会拉伸的指导。

也欢迎其他建议..

【问题讨论】:

【参考方案1】:

可能是图片视图contentMode的问题。

【讨论】:

例如试试galleryImageView.contentMode = UIViewContentModeCenter 我有横向和纵向图像。风景图像工作正常。不要被拉长。但肖像图像往往会被拉伸。 在 awakeFromNib 中放置了 galleryImageView.contentMode = UIViewContentModeCenter.. 但仍然没有改变...

以上是关于防止在 iOS 的 Scrollview 中拉伸图像的主要内容,如果未能解决你的问题,请参考以下文章

SCNMaterial 防止拉伸

ios监听ScrollView/TableView滚动的正确姿势

ios图片拉伸技巧

iOS 网易新闻首页进化版Demo(MXSegmentedPager),自带平行头部拉伸

OpenGL 防止在调整窗口大小时拉伸

如何防止 iphone 的 jquery 移动应用程序在 ipad 中自动拉伸