我是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)
它的工作正常
我怎么能用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)
..........他告诉它更高效,因为它不会将图像保存在缓存中.
我有一个UIImageView(全帧和矩形),我正在用CGAffineTransform旋转.UIImageView的UIImage填充整个帧.旋转和绘制图像时,边缘会出现明显的锯齿状.有什么我可以做的让它看起来更好吗?显然没有背景消除锯齿.
基本上我想拍摄用户从照片库中选择的图像然后应用水印,右下角有一个应用程序名称的三角形.我已经在photoshop中使用透明层制作了第二张图像.
我尝试了一个功能,我不记得确切的名称,但它涉及CGIImages和掩码.这组合了两个图像,但作为一个遮罩,使得图像在透明层所在的位置更暗,而图像本身没有合并,只是掩盖了.
如何在不在屏幕上显示图像的情况下,将水印图像与其他图像合并,制作UIImage?
谢谢.
我有几个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方法,所以没关系.但是......
UIImageViews?我正在尝试使用在Interface Builder中启用模板渲染模式的图像,但我无法使其正常工作.使用按钮一切正常,但使用ImageViews,tintColor不适用于图像.
我在Image资源中启用了"向量类型"(我正在使用pdf)和"渲染为模板图像".我究竟做错了什么?
如何为UIImageView/UIView设置autolayout,以便iphone 6和6 plus的图像视图宽度和高度增加一点.我已经尝试添加约束宽高比,但增加的高度和宽度非常大.无论如何设置约束高度和图像视图的宽度可以手动设置为iPhone 6和6加.看一下屏幕截图,iphone 6和6 plus中的图像视图应该比它现在显示的要小一些.

我在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,内置"预定义样式中的单元对象".
当我们需要从某个URL下载图像并将其显示在两种设备上时 - Retina(带有2x图像)和常规设备 - 我们是否应该有两个不同的图像URL来处理这个问题?
对于资源包中的图像,我们保持xyz.png和xyz@2x.png并且它正常工作.
对于我们从服务器获取的图像,我们是否需要为这两种图像分别设置图像URL,并使用相同的命名约定(xyz.png和xyz@2x.png)在本地缓存它们?
请点亮这里.
我正在尝试创建一个弹出我的xcode应用程序的框,只显示该大小的图像.我有以下内容
UIImageView *newView=[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"beach.jpg"]];
Run Code Online (Sandbox Code Playgroud)
但这会创建完整尺寸的图像并显示它.我怎么只在50以上和200下降时显示为100w 100h?我会用CGRect吗?
另外,我可以点击它使它消失吗?
编辑#1 我不想调整图像大小 - 宁愿只拉出100平方像素并将它们放在一个帧中.
我有一个带有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.

UI的阻止从这里开始..

..并在此结束.

NSURL * url = …Run Code Online (Sandbox Code Playgroud) uiimageview ×10
ios ×5
iphone ×5
objective-c ×4
uiview ×3
cocoa-touch ×2
uiimage ×2
animation ×1
antialiasing ×1
autolayout ×1
ipad ×1
overlay ×1
uitableview ×1
watermark ×1
xcode ×1
xib ×1