我的UIImageView内容模式Aspect Fit尺寸为220x155.我正在以不同的分辨率动态插入不同的图像,但都大于UIImageView的大小.当内容模式设置为Aspect Fit时,图像将根据比例进行缩放以适合UIImageView.
我的问题是,如果例如UIImageView中的图像缩放到220x100,我希望UIImageView也从155到100的高度缩小,以避免我的元素之间的空间.
我怎样才能做到这一点?
我有一个UIImageView,可以通过手势识别器旋转,平移和缩放.因此,它在其封闭视图中被裁剪.一切都很好,但我不知道如何以完整的分辨率保存图片的可见部分.这不是一个屏幕抓取.
我知道我直接从UIImageView的可见内容中获取UIImage,但它仅限于屏幕的分辨率.
我假设我必须在UIImage上进行相同的转换并裁剪它.有一个简单的方法吗?
更新:例如,我有一个高分辨率图像的UIImageView,让我们说一张800万像素的iPhone 4s相机照片,它是用手势转换的,因此它会在其封闭视图中缩放,旋转和移动.显然有一些裁剪正在进行,因此只显示了部分图像.显示的屏幕分辨率和下划线图像分辨率之间存在巨大差异,我需要图像分辨率中的图像.UIImageView位于UIViewContentModeScaleAspectFit中,但是使用UIViewContentModeScaleAspectFill的解决方案也没问题.
这是我的代码:
- (void)rotatePiece:(UIRotationGestureRecognizer *)gestureRecognizer {
if ([gestureRecognizer state] == UIGestureRecognizerStateBegan || [gestureRecognizer state] == UIGestureRecognizerStateChanged) {
[gestureRecognizer view].transform = CGAffineTransformRotate([[gestureRecognizer view] transform], [gestureRecognizer rotation]);
[gestureRecognizer setRotation:0];
}
}
- (void)scalePiece:(UIPinchGestureRecognizer *)gestureRecognizer {
if ([gestureRecognizer state] == UIGestureRecognizerStateBegan || [gestureRecognizer state] == UIGestureRecognizerStateChanged) {
[gestureRecognizer view].transform = CGAffineTransformScale([[gestureRecognizer view] transform], [gestureRecognizer scale], [gestureRecognizer scale]);
[gestureRecognizer setScale:1];
}
}
-(void)panGestureMoveAround:(UIPanGestureRecognizer *)gestureRecognizer;
{
UIView *piece = [gestureRecognizer view];
//We …Run Code Online (Sandbox Code Playgroud) 我正在使用SDWebImage来异步映像下载器并支持缓存.
它工作得很好,除了有时图像在服务器上更新了同名,因此我需要从客户端设备缓存中清除它,但没有成功!
我在这里发现我必须使用"removeImageForKey",但Xcode无法识别它!
我正在使用以下代码来设置图像:
[imgPic setImageWithURL:[NSURL URLWithString:@"http://domain.com/image.jpg"] placeholderImage:[UIImage imageNamed:@"tmpPic.png"]];
Run Code Online (Sandbox Code Playgroud)
调用removeImageForKey的正确方法是什么?我需要导入什么而不是UIImageView + WebCache.h?
我在UITableviewCell中有一个UIImageView.当点击它时,UIImageView应该动画显示全屏.当图像全屏时拍摄,它应缩回原始位置.
怎么能实现这一目标?
-(void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];
imageView.image = [UIImage imageNamed:@"Sample.png"];
[self.view addSubview:imageView];
NSArray *subviews = [self.view subviews];
for(id element in subviews) {
if ([[element class] isKindOfClass:[UIImageView class]]) //check if the object is a UIImageView
{
NSLog(@"element is a UIImageView\n");
[element setCenter:CGPointMake(500., 500.)];
} else {
NSLog(@"element is NOT a UIImageView\n");
}
}
}
Run Code Online (Sandbox Code Playgroud)
我期望输出为"元素是UIImageView,但实际上元素不是UIImageView.为什么?不是有其他子视图.只有一个.此外,运行时,图像显示为100,100,而不是500,500正如所料.
我正在构建一个新的应用程序,并希望在开头有一个"欢迎演练",其中我有一个故事板,其中包含一系列在UIPageViewController中呈现的图像.我有它加载图像和所有这些都很好,但是只要它们超出"前一个"或"下一个"ViewController,图像就会调整大小.我正在Swift用来发展.
以下是该问题的视频:http://youtu.be/dXcjjT-8Bk0
我尝试了所有不同的视图模式(Aspect fit,aspect fill,redraw等),它们的行为都相同.
我正在使用Auto-Layout + Size Classes,因为我希望简化不同屏幕尺寸的开发.我目前的限制使UIImage以正确的大小显示:
Align Centre X to Superview
Top Space to Top Layout Guide
Bottom Space to Bottom Layout Guide + Equals: 50
Run Code Online (Sandbox Code Playgroud)
我正在使用Aspect Fit它,它给了我正确的图像(在他们完成'调整大小行为'之后.
任何人都可以进一步指导我如何解决这个问题?
我试图让UIImage视图可点击,但我没有运气.完成此任务的最佳方法是什么?我得到的错误是"无法将类型'() - > _'的值转换为指定类型'UIImageView'".
lazy var profileImageView: UIImageView = {
let imageView = UIImageView()
imageView.image = UIImage(named: "ic_file_upload_white_48pt")
imageView.translatesAutoresizingMaskIntoConstraints = false
imageView.contentMode = .scaleAspectFill
imageView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(handleSelectorProfileImage)))
imageView.isUserInteractionEnabled = true
return imageView
}
Run Code Online (Sandbox Code Playgroud) 我正在练习初学者代码,因为我是新手,我在这里遇到了很多困惑......这就是我到目前为止所拥有的
UIView *catView = [[UIView alloc] init];
UIImage *image = [UIImage imageNamed:@"lolcat.png"];
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
[catView.view addSubview:imageView];
Run Code Online (Sandbox Code Playgroud)
我不明白为什么这里的东西是错的,有人可以帮忙吗?
我使用的是UIImageView我的每个中UITableViewCells,为缩略图.我的代码用来SDWebImage从我的后端异步抓取这些图像并加载它们,然后缓存它们.这工作正常.
我UIImageView是一个50x50的正方形,在Interface Builder中创建.它的背景是不透明的,白色(与我的UITableViewCell背景颜色相同,用于表现).但是,我想使用光滑的角落来获得更好的美感.如果我这样做:
UIImageView *itemImageView = (UIImageView *)[cell viewWithTag:100];
itemImageView.layer.cornerRadius = 2.5f;
itemImageView.layer.masksToBounds = NO;
itemImageView.clipsToBounds = YES;
Run Code Online (Sandbox Code Playgroud)
我的tableview立即下降5-6帧,在快速滚动期间约为56 FPS(这是可以的),但是当我拖动并拉动刷新控件时,它会稍微滞后并下降到40 FPS左右.如果我删除该cornerRadius行,一切都很好,没有滞后.这已在使用Instruments的iPod touch 5G上进行了测试.
有没有其他方法可以让UIImageView我的细胞四舍五入并且不受性能影响?我已经优化了我cellForRowAtIndexPath,我得到56-59 FPS而快速滚动没有cornerRadius.
在故事板中,在视图控制器中,我尝试在状态栏下添加一个导航栏,运行它,它是透明的,并显示一个应该模糊的标签,如导航栏.

但是当放置嵌入导航视图控制器中的相同视图控制器时,下面的背景图像可能会模糊,这是我的意图.

这两种方式有什么不同的结果?为了使状态栏模糊,第一种方法需要做些什么?
谢谢!
uiimageview ×10
ios ×6
objective-c ×3
swift ×2
addsubview ×1
cocoa-touch ×1
fullscreen ×1
ios5 ×1
ios7 ×1
iphone ×1
nsarray ×1
sdwebimage ×1
statusbar ×1
uitableview ×1
xcode4 ×1