菜鸟教程小白 发表于 2022-12-13 16:11:09

ios - 将 ImageView 添加为自定义 UIControl 中的 subview


                                            <p><p>我正在制作自定义 UIControl,并且我希望控件的一部分包含图像。目前,该控件能够从服务器下载图像,我目前在drawRect中这样做没有效果:</p>

<pre><code>NSURL *url = ;
NSData *data = ;
UIImage *image = ;
UIImageView *imageView = [ initWithFrame:self.bounds];
imageView.image = image;
</code></pre>

<p>我相信这是因为我的控件没有将 imageView 添加为 subview ,但我不知道该怎么做,因为这是 UIControl 而不是 UIView。</p>

<p>类如下所示:</p>

<pre><code>@interface RDWebButton : UIControl

/** The color of the button*/
@property (nonatomic) IBInspectable UIColor *buttonColor;

#if TARGET_INTERFACE_BUILDER
@property (nonatomic) IBInspectable NSInteger buttonShape;
#else
@property (nonatomic) RDShape buttonShape;
#endif

@end

- (void)drawRect:(CGRect)rect {
    // do drawing
    NSLog(@&#34;drawRect...&#34;);
    self.backgroundColor = ;

    ;
    switch (self.buttonShape) {
      case RDShapeSquare: {
            UIBezierPath *path = ;
            ;
            break;
      }
      case RDShapeRoundedRect: {
            UIBezierPath *path = ;
            ;
            break;
      }
      case RDShapeCircle: {
         UIBezierPath *path = ;
         ;
         break;
      }
   }
   NSURL *url = ;
   NSData *data = ;
   UIImage *image = ;
   UIImageView *imageView = [ initWithFrame:self.bounds];
   imageView.image = image;
}
</code></pre>

<p>我现在只想让我的图像出现在绘制的形状上方。我将父类(super class)设置为 UIControl 而不是 UIButton 因为我可能想要更改它以让用户拖动项目以显示菜单或其他内容,但我很确定 UIControl 应该能够完成 UIButton 可以做的所有事情以及更多。我的挑战只是让图像加载到绘制的形状上。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>所以解决方案是您必须在其父 View 的 subview 中找到您的控件。我使用的代码是这样的:</p>

<pre><code>NSURL *url = ;
      NSData *data = ;
      UIImage *image = ;
      UIImageView *imageView = [ initWithFrame:CGRectMake(self.bounds.size.width * 0.25, self.bounds.size.height * 0.25, self.bounds.size.width * 0.5, self.bounds.size.height * 0.5)];
      imageView.image = image;
      ;
      for (UIView *view in self.superview.subviews) {
            if (view == self) {
                ;
            }
      }
</code></pre>

<p>这会将 ImageView 放在我的 UIControl 的中心。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 将 ImageView 添加为自定义 UIControl 中的 subview ,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/36921694/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/36921694/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 将 ImageView 添加为自定义 UIControl 中的 subview