Kev*_*_TA 2 iphone xcode objective-c uiimageview uiimage
出于某种原因,我只能在每次迭代时使用不同的图像分配/初始化时显示UIImageView.奇怪的是我知道正在加载图像数据,因为我正在对图像运行处理并且处理按预期工作.简而言之,这是我尝试的两种方法:
// interface
@interface ViewController : UIViewController <UIAlertViewDelegate>
{
UIImageView *imageView;
}
@property (nonatomic, retain) UIImageView *imageView;
@end
// implementation
@implementation ViewController
@synthesize imageView;
//...
- (void) loadAndDisplayImage {
// Load testing image
UIImage *testImg;
testImg = [UIImage imageNamed:@"Test.png"];
self.imageView = [[UIImageView alloc] initWithImage:testImg];
//size of imageView rect
CGRect frame = self.imageView.frame;
int ivw = frame.size.width;
int ivh = frame.size.height;
//...
}
@end
Run Code Online (Sandbox Code Playgroud)
当我用这个方法self.imageView = [[UIImageView alloc] initWithImage:testImg];的ivw,并ivh具有有效的值并显示图像.但是,如果我将实现更改为:
// implementation
@implementation ViewController
@synthesize imageView;
//...
- (void) viewDidLoad {
self.imageView = [[UIImageView alloc] init];
[self loadAndDisplayImage];
}
- (void) loadAndDisplayImage {
// Load testing image
UIImage *testImg;
testImg = [UIImage imageNamed:@"Test.png"];
self.imageView.image = testImg;
//size of imageView rect
CGRect frame = self.imageView.frame;
int ivw = frame.size.width;
int ivh = frame.size.height;
//...
}
@end
Run Code Online (Sandbox Code Playgroud)
在我使用设置图像的地方self.imageView.image = testImg;,值ivw和ivh都是零,没有显示图像,但对图像的后续处理仍然是准确的.在这两种情况下,我都将图像发送到使用处理[self doRecognizeImage:self.imageView.image];.我无法弄清楚这是怎么可能的.如果在无法显示图像时处理失败,对我来说会更有意义.
想法?谢谢.
问题是,当您image在已初始化时设置属性时UIImageView,帧大小不会更新以匹配新的图像大小(与此不同initWithImage:).
每当您遇到这样的问题时,如果您错过了某些内容,总是值得查看文档:
设置image属性不会更改UIImageView的大小.调用sizeToFit调整视图的大小以匹配图像.
因此,sizeToFit在设置image属性后添加一个调用:
self.imageView.image = testImg;
[self.imageView sizeToFit];
Run Code Online (Sandbox Code Playgroud)
作为旁注,我只会self.在你写一个属性,而不是读它或调用一个方法时使用点符号.换句话说,你可以通过写作来逃避:
// we are not setting imageView itself here, only a property on it
imageView.image = testImg;
// this is a method call, so "self." not needed
[imageView sizeToFit];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13731 次 |
| 最近记录: |