【问题标题】:Setting the Colour a Programmatically Drawn View为以编程方式绘制的视图设置颜色
【发布时间】:2013-12-20 03:01:40
【问题描述】:

我正在修复我的 UITextView,使其不显示在键盘下方,而是将其调整为正确的约束。这可能是一个愚蠢的问题,除了这个愚蠢的问题,很可能还有一个简单的解决方法,但我需要将当前为黑色的视图着色为whiteColor - 似乎我在正确的行上空白这样做的代码。我已经搜索了 Stack Overflow 和 Google 一段时间,但我没有找到任何不返回错误的代码。

键盘后面的黑色矩形。

- (void)keyboardDidShow:(NSNotification *)aNotification {
    NSDictionary* info = [aNotification userInfo];
    CGRect kbRect = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
    kbRect = [[self view] convertRect:kbRect fromView:nil];
    CGSize kbSize = kbRect.size;
    CGRect aRect = self.view.frame;

    /* This should work, but doesn't quite qet the job done */
    //    UIEdgeInsets insets = self.textView.contentInset;
    //    insets.bottom = kbSize.height;
    //    self.textView.contentInset = insets;
    //
    //    insets = self.textView.scrollIndicatorInsets;
    //    insets.bottom = kbSize.height;
    //    self.textView.scrollIndicatorInsets = insets;

    /* Instead, we just adjust the frame of the uitextview */
    aRect.size.height -= kbSize.height + VERTICAL_KEYRBOARD_MARGIN;
    self.companyTextField.frame = aRect;

    // If active text field is hidden by keyboard, scroll it so it's visible
    // Your application might not need or want this behavior.
    if (!CGRectContainsPoint(aRect, self.companyTextField.frame.origin) ) {
        CGPoint scrollPoint = CGPointMake(0.0, self.companyTextField.frame.origin.y - kbSize.height);
        [self.companyTextField setContentOffset:scrollPoint animated:YES];
    }
}

【问题讨论】:

  • 将容器视图的背景颜色设置为白色。 (主窗口视图)以及滚动视图背景颜色为白色。或者,如果您在它后面有另一个视图,请将其设置为白色。通过查看图像,您似乎实际上是在调整视图的大小,而不是 textview。
  • 通常 self.view 颜色为黑色,而您使用的是 scrollview。因为我们不太清楚哪个视图是黑色的。将 self.view 的颜色设置为红色,将滚动视图的颜色设置为蓝色。并检查以便我们可以轻松知道哪个视图具有黑色背景色,以便我们轻松修复
  • @CharanGiri 设置self.view 的背景颜色似乎符合预期,但是我不明白如何设置scrollview 的背景颜色。 SelfViewRedScreenshot.png

标签: ios objective-c uitextview uikeyboard cgrect


【解决方案1】:

假设self.companyTextField 就是你在说的:

self.companyTextField.backgroundColor = [UIColor whiteColor];

如果你说的是主视图:

self.view.backgroundColor = [UIColor whiteColor];

【讨论】:

  • 他在谈论它背后的视图,因为 textview 正在调整大小。
  • 是的,@Chiquis 指的是我要着色的内容。不幸的是,您的原件和您的编辑似乎都不起作用。 :(
  • @MattBush 我认为那是因为你有一个黑色背景的滚动视图。
  • @Chiquis 我将如何在我的代码中设置该滚动视图的颜色?
  • 您能否提供有关控制器中包含的视图的更多信息?从截图中我可以看到一个 UIToolbar 和一个 UITextView。在这 2 和您的控制器的视图之间还有其他视图吗?
【解决方案2】:

将容器视图的背景颜色设置为白色。 (主窗口视图)以及滚动视图背景颜色为白色。

或者,如果您后面有其他视图,请将其设置为白色。

编辑:您的代码显示一个滚动视图,检查它的颜色。

【讨论】:

  • 是的,我已经尝试设置背景颜色:self.view.backgroundColor = [UIColor whiteColor];,我还将每个属性都设置为whiteColor
  • 我可能弄错了,您似乎没有滚动视图,而是滚动文本字段的内容?有点奇怪,通常你有一个覆盖屏幕的大滚动视图,你设置这个滚动视图的内容偏移量来向上移动整个文本视图。您的注释代码也这么说“//如果活动文本字段被键盘隐藏,请滚动它以使其可见”
猜你喜欢
  • 1970-01-01
  • 2023-03-02
  • 1970-01-01
  • 2019-05-29
  • 2012-07-07
  • 2015-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多