标签: uiimageview

如何设置视图的背景图像?

我是Obj-C/Cocoa Touch/iPhone OS的初学者.

我想在每次调用视图时为我的应用程序提供不同图像的背景.

说我有10张图片.我这样用它:

//random image generation
NSString* imageName;
int aRandomNumber = arc4random() % 10;
imageName =[NSString stringWithFormat:@"g%d.jpg",aRandomNumber]; 
self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageWithContentsOfFile:[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:imageName]]];
NSLog(@"aRandomNumber is %d", aRandomNumber);
//random image is generated
Run Code Online (Sandbox Code Playgroud)

它的工作正常

  • 现在,假设我的视图中有文本标签,并且由于图像颜色,文本无法正确显示.我怎么能让它透明一点?(我猜在Interface Builder中称为alpha.)
  • 说我的图像不是320x480.如何设置它以填充整个视图?

我怎么能用UIView/UIImageView做到这一点?

initWithHue:saturation:brightness:alpha:在文档中找到但它不起作用:

self.view.backgroundColor = [[UIColor alloc] initWithHue:0.0 saturation:1.0 brightness:1.0 alpha:1.0];
Run Code Online (Sandbox Code Playgroud)

请帮忙!


朋友建议........

self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageWithContentsOfFile:[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:imageName]]];
Run Code Online (Sandbox Code Playgroud)

..........他告诉它更高效,因为它不会将图像保存在缓存中.

iphone objective-c uiview uiimageview

27
推荐指数
5
解决办法
10万
查看次数

旋转UIImageView的任何快速和脏的抗锯齿技术?

我有一个UIImageView(全帧和矩形),我正在用CGAffineTransform旋转.UIImageView的UIImage填充整个帧.旋转和绘制图像时,边缘会出现明显的锯齿状.有什么我可以做的让它看起来更好吗?显然没有背景消除锯齿.

iphone cocoa-touch antialiasing uiimageview uiimage

26
推荐指数
6
解决办法
2万
查看次数

iPhone,如何将一个图像叠加到另一个图像上以创建要保存的新图像?(水印)

基本上我想拍摄用户从照片库中选择的图像然后应用水印,右下角有一个应用程序名称的三角形.我已经在photoshop中使用透明层制作了第二张图像.

我尝试了一个功能,我不记得确切的名称,但它涉及CGIImages和掩码.这组合了两个图像,但作为一个遮罩,使得图像在透明层所在的位置更暗,而图像本身没有合并,只是掩盖了.

如何在不在屏幕上显示图像的情况下,将水印图像与其他图像合并,制作UIImage?

谢谢.

iphone xcode overlay watermark uiimageview

26
推荐指数
2
解决办法
3万
查看次数

如何停止UIView动画

我有几个UIImageViews内的UIScrollView,我想,当用户长按下其中一个摆动.这与您在iPad/iPhone菜单中长按图标时的行为类似.

所以我有以下内容:

- (void)startWiggling {

    for (UIImageView *touchView in [scrollView subviews]) {

        [UIView beginAnimations:@"wiggle" context:nil];
        [UIView setAnimationDuration:0.1];
        [UIView setAnimationRepeatAutoreverses:YES];
        [UIView setAnimationRepeatCount:FLT_MAX];

        //wiggle 1 degree both sides
        touchView.transform = CGAffineTransformMakeRotation();
        touchView.transform = CGAffineTransformMakeRotation(-0.0174532925);

        [UIView commitAnimations];

    }    

}

- (void)stopWiggling {
    NSLog(@"Stop wiggling");    
}
Run Code Online (Sandbox Code Playgroud)

这很好用.问题是......如何在用户按下按钮后停止摆动?我有一个按钮并连接它等它正在达到stopWiggling方法,所以没关系.但是......

  1. 如何从这些中删除UIView动画UIImageViews
  2. 我可以将此操作绑定到用户按下设备上的主页按钮吗?

animation objective-c uiview uiimageview ipad

26
推荐指数
1
解决办法
3万
查看次数

如何在Xcode 6 Interface Builder中使用模板渲染模式?

我正在尝试使用在Interface Builder中启用模板渲染模式的图像,但我无法使其正常工作.使用按钮一切正常,但使用ImageViews,tintColor不适用于图像.

我在Image资源中启用了"向量类型"(我正在使用pdf)和"渲染为模板图像".我究竟做错了什么?

interface-builder uiimageview ios

26
推荐指数
3
解决办法
1万
查看次数

UIImageView/UIView的Autolayout纵横比

如何为UIImageView/UIView设置autolayout,以便iphone 6和6 plus的图像视图宽度和高度增加一点.我已经尝试添加约束宽高比,但增加的高度和宽度非常大.无论如何设置约束高度和图像视图的宽度可以手动设置为iPhone 6和6加.看一下屏幕截图,iphone 6和6 plus中的图像视图应该比它现在显示的要小一些. 在此输入图像描述

xib uiview uiimageview ios autolayout

26
推荐指数
2
解决办法
4万
查看次数

UITableViewCell的imageView适合40x40

我在tableView和detailView中使用相同的大图像.当tableView中显示imags时,需要使imageView填充40x40,但是在半个屏幕上拉伸.我玩了几个属性,但没有积极的结果:

[cell.imageView setBounds:CGRectMake(0, 0, 50, 50)];
[cell.imageView setClipsToBounds:NO];
[cell.imageView setFrame:CGRectMake(0, 0, 50, 50)];
[cell.imageView setContentMode:UIViewContentModeScaleAspectFill];
Run Code Online (Sandbox Code Playgroud)

我正在使用SDK 3.0,内置"预定义样式中的单元对象".

iphone objective-c uitableview uiimageview

25
推荐指数
3
解决办法
7万
查看次数

下载正常图像Vs视网膜设备图像(2x)

当我们需要从某个URL下载图像并将其显示在两种设备上时 - Retina(带有2x图像)和常规设备 - 我们是否应该有两个不同的图像URL来处理这个问题?

对于资源包中的图像,我们保持xyz.png和xyz@2x.png并且它正常工作.

对于我们从服务器获取的图像,我们是否需要为这两种图像分别设置图像URL,并使用相同的命名约定(xyz.png和xyz@2x.png)在本地缓存它们?

请点亮这里.

iphone cocoa-touch uiimageview uiimage ios

25
推荐指数
1
解决办法
5482
查看次数

创建一个裁剪图像的UIImageView,在50x和200y时只显示100w 100h

我正在尝试创建一个弹出我的xcode应用程序的框,只显示该大小的图像.我有以下内容

UIImageView *newView=[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"beach.jpg"]];
Run Code Online (Sandbox Code Playgroud)

但这会创建完整尺寸的图像并显示它.我怎么只在50以上和200下降时显示为100w 100h?我会用CGRect吗?

另外,我可以点击它使它消失吗?

编辑#1 我不想调整图像大小 - 宁愿只拉出100平方像素并将它们放在一个帧中.

uiimageview ios

25
推荐指数
3
解决办法
2万
查看次数

如何在UIImageView中异步加载图像?

我有一个带有UIImageView子视图的UIView.我需要在UIImageView中加载图像而不阻止UI.阻塞呼叫似乎是:UIImage imageNamed:.以下是我认为解决这个问题的方法:

-(void)updateImageViewContent {
    dispatch_async(
        dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
        UIImage * img = [UIImage imageNamed:@"background.jpg"];
        dispatch_sync(dispatch_get_main_queue(), ^{
            [[self imageView] setImage:img];
        });
    });
}
Run Code Online (Sandbox Code Playgroud)

图像很小(150x100).

但是,加载图像时仍然会阻止UI.我错过了什么?

这是一个展示此行为的小代码示例:

基于UIImageView创建一个新类,将其用户交互设置为YES,在UIView中添加两个实例,并实现其touchesBegan方法,如下所示:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    if (self.tag == 1) {
        self.backgroundColor= [UIColor redColor];
    }

    else {
    dispatch_async(dispatch_get_main_queue(), ^{
    [self setImage:[UIImage imageNamed:@"woodenTile.jpg"]];
  });
    [UIView animateWithDuration:0.25 animations:
        ^(){[self setFrame:CGRectInset(self.frame, 50, 50)];}];
    }
}
Run Code Online (Sandbox Code Playgroud)

将标记1分配给其中一个imageView.

从加载图像的视图开始几乎同时点击两个视图时会发生什么?UI是否因为等待[self setImage:[UIImage imageNamed:@"woodenTile.jpg"]];返回而被阻止?如果是这样,我该如何异步执行此操作?

这是一个 带有ipmcc代码的github项目

使用长按然后拖动在黑色方块周围绘制一个矩形.据我理解他的答案,理论上白色选择矩形不应该在第一次加载图像时被阻挡,但实际上是.

项目中包含两个图像(一个小图片:woodenTile.jpg和一个较大图片:bois.jpg).结果与两者相同.

图片格式

我真的不明白这与第一次加载图像时UI被阻止的问题有什么关系,但是PNG图像在不阻挡UI的情况下进行解码,而JPG图像会阻止UI.

事件的年表

第0步 步骤1

UI的阻止从这里开始..

第2步

..并在此结束.

第3步

AFNetworking解决方案

    NSURL * url = …
Run Code Online (Sandbox Code Playgroud)

objective-c uiimageview grand-central-dispatch ios

25
推荐指数
3
解决办法
3万
查看次数