【问题标题】:UITextView background imageUITextView 背景图片
【发布时间】:2009-04-17 09:03:42
【问题描述】:

如何为UITextView设置背景图片?

【问题讨论】:

    标签: iphone cocoa-touch uitextview


    【解决方案1】:

    您可以拥有一个包含背景图像的 UIImageViewUITextView 作为兄弟姐妹,然后在 Interface Builder 中移动文本视图以与图像视图重叠(或者如果以编程方式将它们都添加到同一个父视图中) .您还需要确保文本视图不是不透明,并为其设置0% 不透明度背景

    【讨论】:

    • 在我看来这是正确的答案,在 oxigen 的方法中,如果背景图像有一个“下边框”,那么用户在输入文本时会看到它与文本视图一起滚动。跨度>
    • 那么究竟如何向 UIImageView 添加兄弟?
    • @jacobronniegeorge 只需将 UIImageView 和 UITextView 添加到视图中(这样它们就是兄弟,例如主视图的子视图),然后使用左/右/上/下约束来实现覆盖。
    【解决方案2】:
    UITextView *textView = [[UITextView alloc]initWithFrame: window.frame];
    textView.text = @"text\n text\n text";
    UIImageView *imgView = [[UIImageView alloc]initWithFrame: textView.frame];
    imgView.image = [UIImage imageNamed: @"myImage.jpg"];
    [textView addSubview: imgView];
    [textView sendSubviewToBack: imgView];
    [window addSubview: textView];
    

    【讨论】:

    • 我认为 duncanwilcox 的答案更可取,因为此答案中描述的方法将导致“背景图像”随着用户键入内容一起滚动。
    • 记得释放分配的对象。之后:[textView addSubview:imgView];添加:[imgView 发布];添加到最后:[textView 发布];
    • 如果需要更好的图像质量,可以调整图像大小!
    【解决方案3】:

    @durai:您的图片有高度限制,如果向下滚动后出现空白背景,则会出现白色背景,然后您可以重复相同的图片。

    这可能会有所帮助:

    textView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed: @"Image.png"]];
    

    【讨论】:

    • 赞成 - 不知道为什么有人会反对这个;这是一个很好的解决方案。
    • 这个答案和@duncanwilcox 的答案都很好。这取决于您是否希望背景滚动。
    • 是的,这确实是一个很好的解决方案,并且被认为是优雅的。 +1,看不到投反对票的原因。
    【解决方案4】:

    只是一个澄清,当尝试来自 @oxigen 的答案 #9 时,我发现这一行:

    UIImageView *imgView = [[UIImageView alloc]initWithFrame: textView.frame];
    

    相对于textView.frame。因此,如果您希望 xy 完全重叠,则您的值必须为 0,0,这意味着您需要类似:

    UIImageView *imgView = [[UIImageView alloc]initWithFrame:textView.bounds];
    

    【讨论】:

    • 或者少打字:` (...) initWithFrame:textView.bounds`
    【解决方案5】:

    我找到了一种设置背景图片的简单方法。

    h 文件

    @interface FNTextView : UITextView
    
    @end
    

    m 文件

    ...
    - (void)drawRect:(CGRect)rect
    {
        [self.bgImage drawInRect:rect];
    
        [super drawRect:rect];
    }
    
    - (void)initHandler
    {
        self.bgImage = [[UIImage imageNamed:@"textview_bg"] resizableImageWithCapInsets:UIEdgeInsetsMake(4, 4, 4, 4)];
    }
    ...
    

    【讨论】:

      【解决方案6】:
      [txtView setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"image.png"]]];
      

      【讨论】:

        【解决方案7】:

        对于平铺背景,我喜欢这个解决方案

        UIImage *patternImage = [UIImage imageNamed:@"image.png"];
        UIColor* color = [UIColor colorWithPatternImage:patternImage];
        textView.backgroundColor = color;
        

        【讨论】:

          【解决方案8】:

          不确定,但您可以尝试以下方法,假设您的背景图片由 UIImageView 处理:

          [myTextView addSubview:myImageView];

          请注意,您可能需要更改 UITextView 的 alpha/opaque 属性的值。

          亲切的问候。

          【讨论】:

            【解决方案9】:
            UITextView *textView=[[UITextView alloc]initWithFrame: CGRectMake(20, 20, 40, 40)];
            textView.text = @"this is a test \n this is test \n this is a test";
            UIImageView *img = [[UIImageView alloc]initWithFrame: textView.frame];
            img.image = [UIImage imageNamed: @"image.png"];
            [self.view addSubview:textView];
            [self.view insertSubview:img belowSubview:textView];
            

            【讨论】:

              【解决方案10】:

              @dulcanwilcox 和 @oxigen 的答案都有效,但是,如果图像被用来显示某种边框,另外可以调整背景图像的大小。

              UITextView *textView = [[UITextView alloc]initWithFrame: window.frame];
              textView.text = @"Some text...";
              
              UIImageView *imgView = [[UIImageView alloc]initWithFrame: textView.frame];
              imgView.image = [[UIImage imageNamed: @"image"] resizableImageWithCapInsets:UIEdgeInsetsMake(8, 8, 8, 8)];
              
              [textView addSubview:imgView];
              [textView sendSubviewToBack:imgView];
              
              [window addSubview:textView];
              

              查看resizableImageWithCapInsets:(UIEdgeInsets)capInsets 的文档。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2012-03-20
                • 1970-01-01
                • 1970-01-01
                • 2013-08-16
                • 1970-01-01
                • 2019-03-24
                • 1970-01-01
                相关资源
                最近更新 更多