为 UIImageView 分配图像问题

Posted

技术标签:

【中文标题】为 UIImageView 分配图像问题【英文标题】:Assigning UIImageView an image issue 【发布时间】:2015-01-19 22:41:18 【问题描述】:

我有一个附加到滚动视图的 UIImageView,每当滚动视图滚动时,我都想为这个 UIImageView 设置一个图像(我使用不同的 UIImageView,因为每当滚动视图 contentOffset 属性达到我想要的某个点时将图像更改为其他图像)。

所以我将这三个属性添加到我的视图控制器中:

@property (weak, nonatomic) IBOutlet UIImageView *vMarkIcn;
@property (weak, nonatomic) IBOutlet UIImageView *greenVmarkIcn;
@property (weak, nonatomic) IBOutlet UIImageView *currentScrollImage;

在我看来DidLoad:

- (void)viewDidLoad 

    [super viewDidLoad];
   //this is the initial image i want to be
    self.currentScrollImage.image = self.vMarkIcn.image;

我的scrollViewDidScroll

- (void)scrollViewDidScroll:(UIScrollView *)scrollView 

    if (self.myScrollView.contentOffset.y <= -73) 

        self.currentScrollImage.image = self.greenVmarkIcn.image;
    
    NSLog(@"%f", self.myScrollView.contentOffset.y);

最后在我的scrollViewDidEndDecelerating 中,我将其改回 vMarkIcn:

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView 

    self.currentScrollImage.image = self.vMarkIcn.image;

iv 将 currentScrollImage 设置为按比例填充,但 vMarkIcn 的大小变得很奇怪......我在这里做错了什么? :/

这就像拉伸什么的......

图片尺寸:

currentScrollImage = 50x50
vMarkIcn = 28x20
greenVmarkIcn = 50x50

但我希望 currentScrollImage 缩放到其他图像的大小

谢谢

【问题讨论】:

一些截图会有所帮助,并了解所有图像的大小 @Wain 我添加了尺寸兄弟 问题出在 vMarkIcn 显然是因为大小差异,但我希望 currentScrollImage 缩放到 vMarkIcn 大小.. 【参考方案1】:

嗯,你的问题并不完全清楚,特别是因为不清楚大小是图像还是图像视图的大小,但听起来你想要UIViewContentModeCenter 而不是UIViewContentModeScaleToFill。这不会调整图像的大小或拉伸图像,而只是保持它们的原始大小并将它们置于图像视图的中心。

【讨论】:

嗯,那么您的图片资源大于您发布的尺寸。通过将图像放入较小的图像视图来缩小图像通常不是一个好习惯(性能,由于调整大小而导致图像模糊),但如果你想走这条路,你需要将currentScrollImage 的大小调整为每次设置新图像时所需的大小。 例如,如何将 currentScrollImage 更改为 vMarkIcn 大小? 由于您的图像比您希望它们显示的大,您不想使用 图像 的大小,而是使用图像视图的大小。像currentScrollImage.bounds = vMarkIcn.bounds 这样的东西应该可以解决问题。但老实说,整个方法似乎有点脏(但我必须承认我并没有花太多时间去尝试理解它)。 我试着像你说的那样设置界限,不幸的是它不起作用。我敢肯定,正如您所说,我完成此任务的代码可能很笨拙,但我不知道另一种方法......我正在尝试执行一些简单的事情,我有一个标签,我在这个标签上添加了一个图像设置为某个偏移量,当我滚动标签(位于滚动视图中)时,图像会弹出,但我想根据某些特定偏移量更改该图像 好的,我的印象是您只需要一个图像视图(滚动的那个),而不是三个。只需直接设置所需的图像 (currentScrollImage.image = [UIImage imageNamed:@"..."])。理想情况下,我会将图像资源的大小调整为不大于您希望它们显示的大小,并且首先要保持相同的大小(例如,在较小的图像周围添加一些填充)。但我无法在 SO cmets 内完成您的工作,尤其是在我没有所有代码的情况下,祝您好运。 :)

以上是关于为 UIImageView 分配图像问题的主要内容,如果未能解决你的问题,请参考以下文章

UIImage 混合模式问题

图像未绑定到UIImageView

将图像检索到我的 UIImageView

为啥 uiimageview 的 contentmode 不起作用?

Objective C,iOS,都有哪些选项可以在 UIImageView 中的图像顶部添加一些文本?

将 UIImageView 添加到 UIButton