菜鸟教程小白 发表于 2022-12-12 10:21:31

ios - 使用自定义 UITableViewCell 时,imageview 框架为零


                                            <p><p>我创建了一个自定义 UITableViewCell ,但想使用单元格中的标准 UIImageView。</p>

<p>我注意到帧总是归零,这给我带来了问题</p>

<pre><code>@implementation MyCustomCell

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    // the style is &#34;default&#34; style
    self = ;
// I need to override the cells image
    if (self) {
      self.imageView.image = ; // The image view frame is {0,0,0,0}
    }
    return self;
}
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>您不会在 <code>-initWithStyle:reuseIdentifier:</code> 中获得任何帧大小,因为尚未加载单元格,这意味着尚未创建 <code>subview</code>然而(<em>即是 <code>nil</code></em>),因此帧大小为 0。<br/>
<sub>即使对于 <code>viewController</code>,您也不会在 <code>-initWithNibName:</code> 方法中获得帧大小。</sub></p>

<p>你会更好:</p>

<ol>
<li><code>-layoutSubviews</code></li> 中的框架特定相关内容
<li>在 <code>-awakeFromNib</code> 中设置初始属性(<em>或直接通过 IB</em>)</li>
</ol>

<p>不管怎样,试试这个:</p>

<pre><code>//does this method even run? it shouldn&#39;t for a custom UITableViewCell
//unless you&#39;ve mixed up things unnecessarily
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    self = ;
    if (self) {
      NSLog(@&#34;initWithStyle -- %@&#34;,self.myImageView);
    }
    return self;
}

//do frame related stuff here
-(void)layoutSubviews
{
    //fyi: this method is called anytime any frame changes

    NSLog(@&#34;layoutSubviews -- %@&#34;,self.myImageView);
}

- (void)awakeFromNib
{
    //fyi: this method is called when the view is pulled from the IB

    // Initialization code
    NSLog(@&#34;awakeFromNib -- %@&#34;,self.myImageView);

    //do you thang here
    ];
}
</code></pre>

<hr/>

<ul>
<li> <a href="https://stackoverflow.com/q/728372/2857130" rel="noreferrer noopener nofollow"><code>-layoutSubviews</code> on SO</a> </li>
<li> <a href="https://stackoverflow.com/q/9122344/2857130" rel="noreferrer noopener nofollow"><code>-awakeFromNib</code> on SO</a> </li>
</ul></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 使用自定义 UITableViewCell 时,imageview 框架为零,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/24104200/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/24104200/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 使用自定义 UITableViewCell 时,imageview 框架为零