ios - 使用 subview 取消归档 UIImageView
<p><p>我有点疯狂地尝试归档和取消归档一个 UIImageView,它有许多 subview ,这些 subview 是从 UIImageView 派生的自定义 View 。这是我所做的:</p>
<p>为项目添加一个类别以允许 UIImage 不符合 NSCoding 的事实:</p>
<pre><code>#import "UIImage-NSCoding.h"
#define kEncodingKey @"UIImage"
@implementation UIImage(NSCoding)
- (id)initWithCoder:(NSCoder *)decoder
{
if ((self = ))
{
NSData *data = ;
self = ;
}
return self;
}
- (void)encodeWithCoder:(NSCoder *)encoder
{
NSData *data = UIImagePNGRepresentation(self);
;
}
@end
</code></pre>
<p>我正在归档的 UIImageView 是我的主视图 Controller 的一个属性,称为“背景”。我这样保存:</p>
<pre><code>NSData *dataToSave = ;
;
</code></pre>
<p>然后我像这样解压它:</p>
<pre><code>NSData *savedData = ;
UIImageView *restoredImageView = ;
self.background.image = restoredImageView.image; // this works - archived image is displayed
</code></pre>
<p>现在我想让我的 subview (或至少其中一个!)与未归档的根对象一起显示:</p>
<pre><code>NSLog(@"Subviews: %d", ); // this tells me my subviews have been archived along with the root object
NSLog(@"Subview 0: %@", ); // and they exist as expected
NSLog(@"Subviews: %d", ); // at this point no subviews are present
]; // subview is not visible on screen
NSLog(@"Subviews: %d", ); // count is one, but where is it?
ORUImageView *oru = [ init]; // I try creating the subview myself
oru = ;
; // it still doesn't show on screen
; // makes no difference
NSLog(@"String: %@", oru.testString); // this correctly logs the test string I added to my custom class
</code></pre>
<p>这是我添加到我的 ORUImageView 子类的内容:</p>
<pre><code>- (void)encodeWithCoder:(NSCoder *)aCoder
{
;
;
; // not sure if this is needed
}
- (id)initWithCoder:(NSCoder *)aDecoder
{
self = ;
];
]; // not sure if this is needed
return self;
}
</code></pre>
<p>我已经尝试过使用和不使用 image 属性的编码。 </p>
<p>我怀疑问题与此属性有关,因为我清楚地将 subview 添加到未归档 View 中 - 它只是不可见!我觉得图像属性没有被设置,但我自己找不到设置它的方法,也找不到任何告诉我正确方法的东西。</p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>嗯。我刚试过这个:</p>
<pre><code>- (IBAction)doButton1:(id)sender {
theData = ;
;
iv = nil;
}
- (IBAction)doButton2:(id)sender {
iv = ;
;
}
</code></pre>
<p>它工作 - 与一个普通的 UIImageView。所以现在我想我不明白你在说什么;似乎 UIImageView <em>is</em> 已经与其图像一起存档。因此,您必须尝试解决其他问题。但我不明白问题出在哪里。</p></p>
<p style="font-size: 20px;">关于ios - 使用 subview 取消归档 UIImageView,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/9334453/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/9334453/
</a>
</p>
页:
[1]