ios - 触发drawRect重绘 View 的按钮

标签 ios xcode drawrect ibaction setneedsdisplay

我有一个带有 subview 的 VC。在 subview level我有一个按钮。我希望按钮导致 View 被更新。
IBAction代码在VC中。它目前所做的只是切换 BOOL值(value)。

回到 subview drawRect: 方法是测试 BOOL 的代码。并相应地更改 View 。

我的观察是,当按下按钮时,IBAction 代码运行,切换 BOOL ,但 drawRect:方法不会被调用。

我尝试手动调用 drawRect (不好的做法,没有工作)。我尝试调用 setNeedsDisplay 但这也不起作用(无法弄清楚如何引用以编程方式创建的 subview )。

欢迎提出建议。

IBAction 代码很简单,但包含在下面:

- (IBAction)rotateWindowButtonWasPressed:(id)sender
{
    // just flip the boolean here. Need to make the code change in drawRect: in top2View.m
    if ([myGlobals gWinVertical])
        [myGlobals setGWinVertical:NO];
    else
        [myGlobals setGWinVertical:YES];
    // Hoping this would force a redraw, but bounds have to change...:(
    //_top2ViewOutlet.contentMode = UIViewContentModeRedraw;
}

最佳答案

要发出 drawRect 调用,请调用 setNeedsDisplay在您更改的 View 上.. 操作系统将在其上调用 drawRect 并自动影响重叠 View 。

在你的情况下,我认为
[self.view setNeedsDisplay]

关于ios - 触发drawRect重绘 View 的按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15084270/

相关文章:

ios - 跟踪 UIView 中的 TouchUpInside 事件

ios - 使用 tapGesture 自定义 UIView

ios - 查看堆栈或绘图

ios - 我试图做一个简单的循环,每次运行它都会崩溃

ios - 根据 slider 更改 UIView 中的内容

ios - 应用程序无法安装在 Apple Watch 中

ios - 当我回到 UIViewController 时,它会偏移

objective-c - 如何在 xcode cocoa 项目中创建一个打开文件对话框?

ios - 当子类 UIView,Objective C 时,在重绘方法中得到奇怪的结果

ios - 自定义绘制矩形: parameter