我正在玩Core Image框架.据我所知,如果我有一个图像(NSImage),首先需要将其转换为CIImage.我能做到.
NSImage *im1 = [[NSImage alloc] initWithContentsOfFile:imagepath];
NSRect rect1;rect1.size.width = img1.size.width; rect1.size.height = img1.size.height;
CGImageRef imageRef1 = [img1 CGImageForProposedRect:&rect1 context:[NSGraphicsContext currentContext] hints:nil];
CIImage *ciimage = [CIImage imageWithCGImage:imageRef1];
Run Code Online (Sandbox Code Playgroud)
我有一个功能,将核心图像过滤器应用于核心图像(CIImage),我想测试.我想将输出图像添加到窗口作为子视图.所以我需要NSImage.如何将此核心图像转换回NSImage?如果我问Google,我的效果不会很好.
谢谢您的帮助.
我使用dispatch_once NSObject来创建数据指针.因此,当主视图控制器出现时,所有游戏资产指针都会生成.为了玩游戏,用户在UIViewController上点击对应于特定级别的UIButton.我叫它LevelSelectionController.当游戏结束时,用户将点击标签(SKLabel).并且将删除所有操作和节点.
[self removeAllActions];
[self removeAllChildren];
[self removeFromParent];
Run Code Online (Sandbox Code Playgroud)
此外,特定级别的SKScene子类将用户返回到LevelSelectionController的任务委托给呈现游戏SKView的viewcontroller ,如下所示.
- (void)closeScene {
SKView *spriteView = [[SKView alloc] init];
[spriteView presentScene:nil];
[self.navigationController popViewControllerAnimated:YES];
}
Run Code Online (Sandbox Code Playgroud)
我唯一的问题是当用户离开游戏场景(SKScene)时内存仍然很高.游戏需要大量资产.因此,当游戏开始时,内存使用量将跳至200 MB.当用户返回到原始级别选择视图控制器时,根据活动监视器,游戏模拟器仍然消耗200 MB .当用户进入不同级别时,内存使用量将再跳过10 MB.那么一旦用户离开SKScene,我怎样才能释放上一场比赛的内存?
我正在使用ARC.Xcode版本是5.1.开发目标是iOS 7.1.
谢谢您的帮助.
- 编辑1 -
我太愚蠢.我知道问题是什么.当我关闭场景时,我正在创建一个新的SKView,然后我将其设置为nil以获取当前场景.有用.但这不应该是这样做的方式.相反,我需要在呈现之前将当前SKView设置为变量.当我关闭场景时,我需要将该变量设置为nil.嗯......我没在想.
- 编辑2 - 当前场景以零显示时几乎没有变化.从removeFromSuperview中删除它并没有太大作用.
我有以下Swift(Swift 3)函数来生成一个Date
带日期components(DateComponents
)的date().
func makeDate(year: Int, month: Int, day: Int, hr: Int, min: Int, sec: Int) -> NSDate {
let calendar = NSCalendar(calendarIdentifier: .gregorian)!
let components = NSDateComponents()
components.year = year
components.month = month
components.day = day
components.hour = hr
components.minute = min
components.second = sec
let date = calendar.date(from: components as DateComponents)
return date! as NSDate
}
Run Code Online (Sandbox Code Playgroud)
如果我使用它,它将返回GMT日期.
override func viewDidLoad() {
super.viewDidLoad()
let d = makeDate(year: 2017, month: 1, day: 8, hr: 22, min: 16, …
Run Code Online (Sandbox Code Playgroud) 你如何播放流媒体视频AVPlayer
?
import Cocoa
import AVKit
class StreamViewController: NSViewController {
var videoPlayer: AVPlayer!
@IBOutlet weak var moviePlayerView: AVPlayerView!
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewWillAppear() {
super.viewWillAppear()
}
override func viewDidAppear() {
super.viewDidAppear()
openStream()
}
func openStream() {
completeOpenStream { (done) -> (Void) in
if done {
print("done!")
}
}
}
func completeOpenStream(completionHandler: @escaping (Bool) -> (Void)) -> Void {
DispatchQueue.global().async() {
let urlString = "http://samples.mplayerhq.hu/V-codecs/h264/interlaced_crop.mp4" // You can open it with QuickTime.
let url = URL(fileURLWithPath: …
Run Code Online (Sandbox Code Playgroud) 我从来没有用过NSBeep
。我已经导入AppKit.framework
到项目中。在 Xcode 8.2 和 Swift 3 下,我有
import AppKit
class AppDelegate: NSObject, NSApplicationDelegate {
func applicationWillFinishLaunching(_ notification: Notification) {
NSBeep()
}
}
Run Code Online (Sandbox Code Playgroud)
而且没有哔哔声。我究竟做错了什么?谢谢。
多年来我一直使用该CGWindowListCreateImage
功能来将桌面捕获为图像。在 Swift 中,我返回一个图像 ( NSImage
),如下所示。
func makeCGWindowImage(size: CGSize) -> NSImage? {
if let imageRef = CGWindowListCreateImage(CGRect.infinite, .optionAll, kCGNullWindowID, .bestResolution) {
let image = NSImage(cgImage: imageRef, size: size)
return image
}
return nil
}
Run Code Online (Sandbox Code Playgroud)
我需要使用该CGWindowListCreateImage
功能来捕获桌面区域,不仅涉及我的应用程序本身,还涉及其他区域(文件夹窗口、Safari Web 浏览器窗口...)。问题是,如果我使用上面的窗口图像功能,我会收到有关屏幕录制隐私的警报消息。
使用该功能最糟糕的部分CGWindowListCreateImage
是审核者拒绝该应用程序,因为该应用程序不必要地显示隐私消息。如果我问审稿人屏幕录制隐私的用途是什么,他或她说这是为了制作视频,这对我来说听起来像是废话。审稿人建议我使用替代方案。我问过,但审稿人没有说这些替代方案是什么。那么,除了CGWindowListCreateImage
捕获桌面区域的功能之外,是否还有其他方法,不仅涉及我的应用程序,还涉及其他窗口。
我的一本电子书解释了如何添加新的菜单项.嗯,这不是很难弄明白.要弄清楚如何将IBAction链接到新的菜单项也不难.但是本书和Google搜索结果并没有解释如何禁用菜单项.更具体地说,我想禁用"首选项"和"退出",具体取决于当前显示的窗口.如果应用程序当前显示"首选项"窗口,我想禁用这些菜单项.
假设我有一个名为preferencesMenu的IBOutlet 然后我有
[preferencesMenu setEnabled:NO];
Run Code Online (Sandbox Code Playgroud)
,这不会禁用有问题的菜单项.那么如何禁用特定的菜单项呢?
感谢您的意见.
汤姆
我有一个文本字段和一个textView.controlTextDidChange方法响应文本字段更改.但它没有回应textview的变化.
class AppDelegate: NSObject,NSApplicationDelegate,NSTextFieldDelegate,NSTextViewDelegate {
func applicationWillFinishLaunching(notification:NSNotification) {
/* delegates */
textField.delegate = self
textView.delegate = self
}
override func controlTextDidChange(notification:NSNotification?) {
if notification?.object as? NSTextField == textField {
print("good")
}
else if notification?.object as? NSTextView == textView {
print("nope")
}
}
}
Run Code Online (Sandbox Code Playgroud)
我在Yosemite下运行Xcode 7.2.1.我做错了吗?
我一直在测试SwiftUI,看看我能用它走多远。现在,我想知道是否可以将字符串从 SwiftUIView
直接传递到UIViewController
. 我想用 来显示这个字符串UILabel
。 UILabel
这就是我故事板上的全部内容。
以下是我的视图控制器(UIViewController
)。
import UIKit
import SwiftUI
class HomeViewController: UIViewController {
var message = String()
@IBOutlet weak var messageLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
messageLabel.text = message
}
}
struct HomeViewControllerRepresentation: UIViewControllerRepresentable {
func makeUIViewController(context: UIViewControllerRepresentableContext<HomeViewControllerRepresentation>) -> HomeViewController {
UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "homeViewController") as! HomeViewController
}
func updateUIViewController(_ uiViewController: HomeViewController, context: UIViewControllerRepresentableContext<HomeViewControllerRepresentation>) {
}
}
Run Code Online (Sandbox Code Playgroud)
我的 …
我有以下代码.
NSMutableArray *aList = [[NSMutableArray alloc] init];
for (NSIndexPath *indexPath in tableview1.indexPathsForSelectedRows) {
NSString *r = [NSString stringWithFormat:@"%i",indexPath.row];
[aList addObject:r];
}
Run Code Online (Sandbox Code Playgroud)
所以我得到的是一个选择的UITableView行列表.有没有得到一个简单的方法列表所行不选择?
谢谢您的帮助.
macos ×5
ios ×4
objective-c ×4
swift ×4
cocoa ×3
swift3 ×2
appkit ×1
avkit ×1
avplayer ×1
core-image ×1
desktop ×1
ios6 ×1
nscalendar ×1
nsdate ×1
nsimage ×1
nstextview ×1
screenshot ×1
skscene ×1
skview ×1
sprite-kit ×1
storyboard ×1
swiftui ×1
uitableview ×1