iOS 中怎么修改 uiimageview旋转动画的frame

iOS 根据UIImage 修改UIImageView Frame (包括截取图片中间部分)-爱编程
iOS 根据UIImage 修改UIImageView Frame (包括截取图片中间部分)
iOS UIImageView 根据需求调整frame
1、图片的宽和高不相等,截取图片的中间部分,截取的部分Size明确
2、图片的宽度要等于其父视图的类的宽度,然后根据宽度计算高度,保证
图片不变形,显示正常
3、图片的宽度或高度大于其父视图的类的宽的或高度,如果是宽度的问题,
就以其父视图的宽度为准,确定图片的显示宽度;如果是高度的问题,就以
其父视图的高度为准,确定图片的显示高度。
以上三种情况,具体示例依次如下:
第一种情况,调用方法:
- (void)imageLoadedFinish:(UrlImageView *)oldImageView image:(UIImage *)imageV skuInfo:(NSDictionary *)skuInfo
&&&&& 截取的目标尺寸
(WIN_SIZE.width-40)/3;
&&&&&& &//截取中间部分
&&&&&&& oldImageView.image =
[self squareImageFromImage:imageV scaledToSize:imgW];
---截图操作 //截取中间部分
(UIImage *)squareImageFromImage:(UIImage
*)image scaledToSize:(CGFloat)newSize
&& --缩放比例
&&& CGAffineTransform scaleT
&&& 图片大小大于图片高度的情况
&&& if (image.size.width &
image.size.height)
&&&&&&& //image原始高度为200,缩放image的高度为400pixels,所以缩放比率为2
&计算缩放比例
&&&&&& CGFloat scaleRatio = newSize / image.size.
&&&&&&& scaleTransform = CGAffineTransformMakeScale(scaleRatio, scaleRatio);
&&&&& &&//设置绘制原始图片的画笔坐标为CGPoint(-100, 0)pixels
&&&& &计算画笔的X轴
&&&&&&& origin = CGPointMake(-(image.size.width - image.size.height) / 2.0f, 0);
&&& } else
&&&&& 图片的高度大于宽度的情况
&&&&&&& CGFloat scaleRatio = newSize / image.size.
&&&&&&& scaleTransform = CGAffineTransformMakeScale(scaleRatio, scaleRatio);
&&&&&&& 计算画笔的Y轴
&&&&&&& origin = CGPointMake(0, -(image.size.height - image.size.width) / 2.0f);
&&& CGSize size = CGSizeMake(newSize, newSize);
&&& //创建画板为(400x400)pixels
&&& if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)])
&&&&&&& UIGraphicsBeginImageContextWithOptions(size, YES, 0);
&&& } else
&&&&&&& UIGraphicsBeginImageContext(size);
&CGContextRef context = UIGraphicsGetCurrentContext();
&& &//将image原始图片(400x200)pixels缩放为(800x400)pixels
&&& CGContextConcatCTM(context, scaleTransform);
&& &//origin也会从原始(-100, 0)缩放到(-200, 0)
&&& [image drawAtPoint:origin];
&& &//获取缩放后剪切的image图片
&&& image = UIGraphicsGetImageFromCurrentImageContext();
&&& 结束画板绘制
&&& UIGraphicsEndImageContext();
第二种情况:
&&&&& //等比例缩放
-(void)imageLoadedFinish:(UrlImageView *)oldImageView image:(UIImage *)imageV skuInfo:(NSDictionary *)skuInfo
{ &&&得到当前视图的frame
&&&&&&& CGSize selfSize = self.frame.
&&&&&& 得到image的frame
&&&&&&& CGSize imageSize = imageV.
&&&&& &得到imageView 的frame
&&&&&&& CGRect imageVRect = self.imageView.
&&&&&& 确定imageView 的宽度
&&&&&&& imageVRect.size.width = selfSize.
&&&&&& 根据宽度计算imageView 的高度
&&&&&&& imageVRect.size.height = imageVRect.size.width*imageSize.height/imageSize.
&&&&&&& //计算x,y
&&&&&&& imageVRect.origin.x = 0;
&&&&&&& imageVRect.origin.y = 0;
&&&&&&& self.imageView.frame = imageVR
&&&&&&& CGRect selfRect = self.
&&&&&&& selfRect.size.width = imageVRect.size.
&&&&&&& selfRect.size.height = imageVRect.size.
&&&&&&& self.frame = selfR
第三种情况:
//等比例缩放
(void)imageLoadedFinish:(UrlImageView *)oldImageView image:(UIImage *)imageV skuInfo:(NSDictionary *)skuInfo
&&&&&& 得到当前视图的frame
&&&&&& CGSize selfSize = self.frame.
&&&&&& 得到当前Image的frame
&&&&&&& CGSize imageSize = imageV.
&&&&&& 得到当前ImageView 的frame
&&&&&&& CGRect imageVRect = self.imageView.
&&&&& &image的宽度大于当前视图的宽度
&&&&&&& if(imageSize.width & selfSize.width)
&&&&&&&&&&& 根据宽度计算高度,确定宽度
&&&&&&&&&&& imageVRect.size.height = selfSize.width * imageSize.height / imageSize.
&&&&&&&&&&& imageVRect.size.width = selfSize.
&&&&&& &image的高度大于当前视图的高度
&&&&&&& if(imageVRect.size.height & selfSize.height)
& & & & & & & &
根据高度计算宽度,确定宽度
&&&&&&&&&&& imageVRect.size.width = selfSize.height * imageVRect.size.width& / imageVRect.size.
&&&&&&&&&&& imageVRect.size.height = selfSize.
//计算x,y
&&&&&&& imageVRect.origin.x = (selfSize.width-imageVRect.size.width)/2;
&&&&&&& imageVRect.origin.y = (selfSize.height-imageVRect.size.height)/2;
&&&&&&& self.imageView.frame = imageVR
&&&&&&&&&&&&&&&&&
版权所有 爱编程 (C) Copyright 2012. . All Rights Reserved.
闽ICP备号-3
微信扫一扫关注爱编程,每天为您推送一篇经典技术文章。1,076 views
2,120 views
一个喜欢游戏开发的iOS/Android程序员,折腾过几年网站。UIImageView控件怎么让超出控件范围的图像信息隐藏_问答_ThinkSAAS
UIImageView控件怎么让超出控件范围的图像信息隐藏
UIImageView控件怎么让超出控件范围的图像信息隐藏
为什么在storyboard里面都是隐藏的,但是编译之后还是显示出来了?
UIImageView能用来做sprite吗?
是我的问题,问题在退出登录重新登录,没有把之前的delegate清理以及socket close,导致队列里的冲突。
正则,RegexKitLite是用的最多的,DP4用不了考虑降级到4.3||尝试修复,修好发pull request||向作者提feature request试试看,虽然此框架两年没更新了。
还有内建的正则实现,我来一段检查字符串是否是合法的中国手机号的正则匹配:- (BOOL)isValidChinesePhoneNumber
NSString *Regex =@"(13[0-9]|14[57]|15[]|18[])d{8}";
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", Regex];
return [predicate evaluateWithObject:self];
}2、_textView 后来我改成 textView 了,和 @property 对应好的。重构改名两个都会被改(xcode的bug)
同样的问题存在于://重构一个方法,另一个也会跟着改名,xcode的bug
+ (void)3、
我修改过的类如下,看下是否满足需求:
.h#import &UIKit/UIKit.h&
@interface TestViewController : UIViewController&UITextViewDelegate&
@end.m:#import "TestViewController.h"
@interface TestViewController ()
@property (strong, nonatomic) UIScrollView *scrollV
@property (strong, nonatomic) UITextView *textV
@implementation TestViewController
@synthesize scrollView = _scrollView, textView = _textV
- (void)viewDidLoad
[super viewDidLoad]; // Do any additional setup after loading the view.
self.scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 200)];
self.scrollView.backgroundColor = [UIColor greenColor];
self.scrollView.contentInset = UIEdgeInsetsMake(1, 0, 0, 0);
self.textView = [[UITextView alloc] initWithFrame:CGRectMake(0, 0, 320, 200)];
self.textView.scrollEnabled = NO;
self.textView.delegate =
[self.scrollView addSubview:self.textView];
[self.view addSubview:self.scrollView];
[self resizeTextView];
- (void)resizeTextView
CGRect frame = self.textView.
frame.size.height = self.textView.contentSize.
[self.textView setFrame:frame];
[self.scrollView setContentSize:frame.size];
if (frame.size.height & self.scrollView.frame.size.height)
[self.scrollView setContentOffset:CGPointMake(0, frame.size.height - self.scrollView.frame.size.height) animated:YES];
- (void)textViewDidChange:(UITextView *)textView
[self resizeTextView];
@end5.0下测试,4.3可能会有刚进入编辑状态顶部漂移问题,楼主先试试看
UITextView中也有一个UIScrollView,和你的背景UIScrollView是重合的,你的滚动动作会出发两个UIScrollView。
所以,如果你不需要编辑这些文字,建议你用UILabel作为文本容器,然后用sizeToFit来控制高度。这个Demo中是一个内容动态改变的UILabel,高度自适应,放在一个UIScrollView中可以滚动。可以参考
imageView.clipsToBounds = YES;have a try想修改图片于View的相对坐标,可以增加一个CALayer用于存放图片,或者索性将一个UIImageView *a作为另一个UIView *b的subview,然后调整a的frame。
下面代码示范了如何使用CAlayer做到修改图片坐标
此类继承自UIView,setImageFrame方法可以修改图片相对于View的坐标或大小等。//
// OTImageView.m
// ClipDemo
// Created by openthread on 5/31/12.
// Copyright (c) 2012 __MyCompanyName__. All rights reserved.
#import "OTImageView.h"
#import &QuartzCore/QuartzCore.h&
@implementation OTImageView
CALayer *_imageL
#pragma mark - Image Methods
- (UIImage *)image
CGImageRef imageRef = (__bridge CGImageRef)_imageLayer.
UIImage *image = [UIImage imageWithCGImage:imageRef];
- (void)setImage:(UIImage *)image
CGImageRef imageRef = image.CGI
_imageLayer.contents = (__bridge id)imageR
#pragma mark - Frame Methods
- (void)setImageFrame:(CGRect)imageFrame
_imageLayer.frame = imageF
#pragma mark Life Cycle
- (id)initWithFrame:(CGRect)frame
self = [super initWithFrame:frame];
if (self) {
_imageLayer = [CALayer layer];
_imageLayer.backgroundColor = [UIColor blueColor].CGC
_imageLayer.frame = CGRectMake(0, 0, frame.size.width, frame.size.height);
[self.layer addSublayer:_imageLayer];
添加你想要问的问题
PHP开发框架
开发工具/编程工具
服务器环境2015年4月 移动开发大版内专家分月排行榜第二
2015年5月 移动开发大版内专家分月排行榜第三2015年3月 移动开发大版内专家分月排行榜第三2014年10月 移动开发大版内专家分月排行榜第三
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。IOS给View设置背景图片(代码实现)
ios 设置背景图片
1.uiscrollview 设置背景图片
// Setup the Scroll View
UIScrollView*tempScrollView=(UIScrollView*)self.
tempScrollView.contentSize=CGSizeMake(320,720);
// Set Stationary Background, so that while the user scroll the background is
UIImage*img =[UIImage imageNamed:@"bg-body.jpg"];
[tempScrollView setBackgroundColor:[UIColor colorWithPatternImage:img]];
2. uiview 设置背景图片
self.view.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed:@"1.jpg"] ];
3. 个要比较推荐下面几种
在uiview设置背景图片
UIImageView* bgview = [[UIImageView alloc]initWithImage:TTIMAGE(@"bundle://uiscrollviewbg1.jpg")];
bgview.frame = CGRectMake(0, 0, scrollView.frame.size.width, scrollView.frame.size.height);
[self addSubview:bgview];
[bgview release];
在uiscrollview设置背景图片
UIImageView* bgview = [[UIImageView alloc]initWithImage:TTIMAGE(@"bundle://uiscrollviewbg.png")];
bgview.frame = CGRectMake(0, -100, 320, 100);
[_scrollView addSubview:bgview];
[bgview release];}

我要回帖

更多关于 ios uiimageview动画 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信