【问题标题】:XCode Cocoa questions (VB.NET to Cocoa)XCode Cocoa 问题(VB.NET 到 Cocoa)
【发布时间】:2011-03-01 00:56:50
【问题描述】:

嗯,我已经为 VB.NET 编程了一段时间,现在我对编写 Mac 应用程序感兴趣。

我知道 Objective-C 没问题。但是,当然,我需要了解 Cocoa/Xcode 的开发环境。我了解 Interface Builder 相当于 VB.NET 中的 Form Designer 以及这两种环境似乎共有的其他常见概念。

现在,我将从基本的开始:

在 VB.NET 中,我会使用 Paint 函数来获取一个 Graphics 对象并在我的窗口某处绘制一个红色矩形。 Cocoa 中的等价物是什么?

谢谢。我知道我的问题非常具体(如何在窗口中制作一个红色矩形),但这是我需要更好地理解的少数几件事之一,因为我可以从那时开始工作。

【问题讨论】:

    标签: vb.net cocoa xcode


    【解决方案1】:

    最直接的方法是继承标准视图类并实现-[drawRect:] 方法。 UIKit (iOS) 和 AppKit (Mac OS X) 之间的处理方式略有不同。例如,要在 iOS 中绘制一个与视图可见边界大小相同的红色框,您需要继承 UIView,然后实现一个 drawRect: 如下所示:

    - (void)drawRect:(CGRect)rect
    {
      [[UIColor redColor] setFill]; // set the fill color
      UIRectFill([self bounds]);    // fill a box (this view's visible bounds)
    }
    

    要在 Mac OS X 中做同样的事情,你需要继承 NSView,然后实现一个 drawRect: 像这样:

    - (void)drawRect:(NSRect)rect
    {
      [[NSColor redColor] setFill]; // set the fill color
      NSRectFill([self bounds]);    // fill a box (this view's visible bounds)
    }
    

    有关更多信息,您可以查看 Cocoa Drawing Guide 以使用 Mac OS X 和 AppKit 或查看 Drawing and Printing Guide for iOS 以使用 iOS 和 UIKit。

    【讨论】:

    • 我期望 [self bounds] 返回什么,NSRect?无论如何,谢谢,我会测试一下。
    • @Omega - 是的,AppKit 中的一个 NSRect,它在 iOS 中返回一个 CGRect
    • 可能听起来很愚蠢,但为什么要在 AppKit 和 iOS 中分开这些东西呢?是否有重大区别,或者我可以简单地将所有 NS 前缀更改为 UI(或 CG,取决于)并解决问题?
    • @Omega - 不幸的是,iOS 和 Mac OS X 之间的一大区别在于 UI 的处理方式。 AppKit 是 Mac OS X 的 UI 框架,而 UIKit 是 iOS (Cocoa-Touch) 的 UI 框架。在许多情况下,您可以这样做,但在许多其他情况下,您不能。查看我在答案中链接的绘图指南,并从(iOS v Mac OS X)开始查看您最感兴趣的那个
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-25
    相关资源
    最近更新 更多