我已经实现了一个非常简单的图片查看器,允许用户浏览图像集合.它们从Internet加载,并通过UIImageView对象显示在设备上.像这样的东西:
UIImage *image = [[UIImage alloc] initWithData:imageData];
[img setImage:image];
Run Code Online (Sandbox Code Playgroud)
imageData是NSData我用来从URL加载图像内容img的UIImageView实例,并且是实例.
这一切都运行良好,但新图像替换之前显示的图像没有任何过渡,我想知道是否有一个简单的方法来做一个良好的动画过渡,以改善用户体验.
知道怎么做吗?代码样本将非常感激.
我正在尝试查找软件来查看.img文件.但这不是预期的..img文件不是所有图像,它也包含一些值.所以我想查看.img文件.请告知任何类似的软件.
我在UIScrollView中嵌入了UIImageView,在iOS 6和autolayout之前,我在控制器的viedDidLoad方法中使用了以下代码段来显示可滚动和可缩放的图像.
self.scrollView.contentSize = self.imageView.image.size;
self.imageView.frame = CGRectMake(0, 0, self.imageView.image.size.width, self.imageView.image.size.height);
Run Code Online (Sandbox Code Playgroud)
但现在使用故事板中设置的约束.我发现这个问题在iOS 6上使用自动布局在ScrollView中嵌入ImageView,其他一些在SO中说明在viewDidLoad之后加载/强制执行约束,并且将我之前的代码片段移动到viewDidAppear会解决此问题,但缩放不能正常工作似乎在缩放到缩放手势后,scrollView和imageView的大小会重置为storyboard的约束.
我只是在猜测,但我认为可能有一些方法可以覆盖scrollView和imageView在可能有效的代码中的垂直和水平空间约束.
其他人有这个问题吗?
我正在尝试使用CGAffineTransformMakeScale为自定义按钮设置动画,如下所示:
if (stateButton == 0) { //The button is gonna appear
self.selected = YES;
self.imageView.transform = CGAffineTransformMakeScale(0.01, 0.01);
[UIView animateWithDuration:0.5 delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{
// animate it to the identity transform (100% scale)
self.imageView.transform = CGAffineTransformIdentity;
} completion:nil];
}
else if (stateButton ==1) { //The button is gonna disappear
self.imageView.transform = CGAffineTransformMakeScale(1, 1);
[UIView animateWithDuration:0.5 delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{
// decrease button
self.imageView.transform = CGAffineTransformMakeScale(.01, .01);
} completion:^(BOOL finished){
self.selected = NO;
}];
}
Run Code Online (Sandbox Code Playgroud)
按钮完美地增长到原始大小,但是,我不知道原因,但是当我点击按钮减少它时,它从原始尺寸大100%的尺寸减小到原始尺寸,而不是开始如我在代码中所示,原始尺寸减小并达到0.01的标度.
请帮忙!!
我画圆形的头像图片,只把它运用cornerRadius到UIImageView的层,并且还通过添加边框borderWith和borderColor.像这样:
self.layer.masksToBounds = YES;
self.layer.cornerRadius = imageDimension / 2.f;
self.layer.borderWidth = 1.f;
self.layer.borderColor = borderColor.CGColor;
Run Code Online (Sandbox Code Playgroud)
这很有效,除了边界外的这种微小但明显的内容出血,如下所示:

有没有办法让边界开始几个1/10点,或者插入的内容多于边界?
感谢FelixLam,我提出了一个很好的解决方案,并将其留在这里为后世界:
@interface MMRoundImageViewWithBorder : UIView
- (id)initWithImage:(UIImage *)image borderWidth:(CGFloat)borderWidth;
@property (strong, nonatomic) UIImageView *imageView;
@property (assign, nonatomic) CGFloat borderWidth;
@property (strong, nonatomic) UIColor *borderColor;
@end
@implementation MMRoundImageViewWithBorder
- (id)initWithImage:(UIImage *)image borderWidth:(CGFloat)borderWidth {
if (self = [super init]) {
self.borderWidth = borderWidth;
self.borderColor = UIColor.whiteColor;
self.imageView = [[UIImageView alloc] initWithImage:image];
[self addSubview:self.imageView];
self.imageView.layer.masksToBounds = YES; …Run Code Online (Sandbox Code Playgroud) 我正在使用以下命令从nib文件加载视图:
NSArray *nibViews = [[NSBundle mainBundle] loadNibNamed:@"AnalysisView" owner:self options:nil];
AnalysisView *gridView = [nibViews objectAtIndex: 0];
Run Code Online (Sandbox Code Playgroud)
nib包含一个名为gridScrollView的scrollview,在AnalysisView实现文件中,我有一个方法可以将视图作为子视图添加到scrollview:
for (NSInteger i = [results count] -1; i >= 0; i--)
{
Result *result = [results objectAtIndex:i];
[self loadResult: result];
}
- (void) loadResult: (Result *) result
{
NSArray *nibViews = [[NSBundle mainBundle] loadNibNamed:@"GridView" owner:self options:nil];
GridView *gridView = [nibViews objectAtIndex: 0];
gridView.tag = self.graphCount;
CGRect gridFrame = gridView.frame;
CGFloat yOffset = gridFrame.size.height * self.graphCount;
gridView.frame = CGRectMake(0, yOffset, gridFrame.size.width, gridFrame.size.height);
[self.gridScrollView addSubview: gridView]; …Run Code Online (Sandbox Code Playgroud) 在故事板或界面构建器中为uiimageview设置图像时,它会保留原始UIImageView图像的形状,这意味着图像本身完全失真.
为了匹配UIImageView其图像的大小,我必须手动输入文件检查器的大小.
有没有一种方法UIImageView可以自动检测其图像的原始大小并相应地调整其自身的大小?
是否有可能我的ImageView所有屏幕尺寸都适合没有图像看起来拉伸?
我尝试使用fill_parent> 将所有比例类型更改为背景和srcwrap_content
但仍然.如果图像不小,它只是看起来拉伸..
例:
<ImageView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:scaleType="centerInside"
android:adjustViewBounds="true"
android:background="@drawable/background" />
<ImageView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:scaleType="fitXY"
android:adjustViewBounds="true"
android:background="@drawable/background" />
Run Code Online (Sandbox Code Playgroud)
这两个适合宽度,但图像被拉伸..但当我将其更改为src时,图像只是居中和小.
我正在为iPad开发iOS应用程序.有没有办法旋转UIImage90º然后将其添加到UIImageView?我尝试了很多不同的代码,但都没有工作......
谢谢!
我想改变我的UIImageView高度/宽度以匹配我从相册中选择的图像,我在这里找到了一个代码片段.
-(CGRect)frameForImage:(UIImage *)imgs inImageViewAspectFit:(UIImageView *)imagev
{
float imageRatio = imgs.size.width / imgs.size.height;
float viewRatio = imagev.frame.size.width / imagev.frame.size.height;
if(imageRatio < viewRatio)
{
float scale = imagev.frame.size.height / imgs.size.height;
float width = scale * imgs.size.width;
float topLeftX = (imagev.frame.size.width - width) * 0.5;
NSLog(@"image after aspect fit: width=%f",width);
imagev.frame = CGRectMake(topLeftX, 0, width, imagev.frame.size.height);
return CGRectMake(topLeftX, 0, width, imagev.frame.size.height);
}
else
{
float scale = imagev.frame.size.width / imgs.size.width;
float height = scale * imgs.size.height;
float topLeftY = (imagev.frame.size.height - height) * …Run Code Online (Sandbox Code Playgroud) uiimageview ×10
ios ×5
ios6 ×3
objective-c ×3
autolayout ×2
uiscrollview ×2
android ×1
calayer ×1
image ×1
imageview ×1
ipad ×1
uiimage ×1
xcode ×1