为 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 分配图像问题的主要内容,如果未能解决你的问题,请参考以下文章
为啥 uiimageview 的 contentmode 不起作用?