我试图让我的NSScrollView(并因此包含NSOutlineView)使用模糊NSVisualEffectView的幕后混合效果.
我已成功制作NSVisualEffectView容器视图并将滚动视图作为子视图放置.这似乎工作正常(只要我使我的所有表格单元格,表格,nsscrollview等透明).
然而,我现在已经在"辅助功能"选项下改变了"降低透明度",突然之间,我的背后有一个黑色背景NSScrollView.我试图对视觉效果视图进行子类化以覆盖drawRect方法,以便我可以绘制自己的背景,但我刚刚学会了这是不可能的或推荐的.
如何检测"减少透明度"是否为"开启"以及如何动态地使滚动视图不透明?
objective-c nsoutlineview nsview osx-yosemite nsvisualeffectview
NSVisualEffectView 在 NSWindow 中似乎工作得很好,但是如果我将 NSWindow 的标题栏设置为对 Interface Builder 隐藏,它就会停止工作(即不会模糊窗口后面的内容)。我不明白为什么这两个是链接的,但想要一个无边界的窗口,模糊工作 - 这不可能吗?
我将我的iOS应用程序与Crashlytics链接,但与其他框架(例如Hockeyapp)不同,您需要在应用程序中嵌入,Crashlytics不指示我们需要执行此操作的任何地方.那么框架只是一个带有静态库的"假框架",它在编译时被链接起来了吗?如果我没有将Fabric和Crashlytics嵌入到我的应用程序的Frameworks文件夹中,我会遇到任何问题吗?
在人们升级到iOS 10之后,我突然在一个稳定的应用程序上看到数百次崩溃.大多数情况下,所有这些都与:
Termination Reason: Namespace SPRINGBOARD, Code 0xdead10cc
Run Code Online (Sandbox Code Playgroud)
许多崩溃日志没有太多的符号,除了它们似乎有一些共同点(我认为) - 当应用程序尝试同步/访问数据库或使用其他方法执行其他操作时,它们会在后台崩溃sqlite数据库(例如写入它).这之前工作得很好,但突然有人报告他们的iPhone在使用应用程序时正在重启.
其他人有类似问题吗?任何决议?崩溃日志没有多大帮助,因为崩溃是在sqlite3.c中的某个地方尝试或者在sqlite3_step或open
请注意,这是与Mac OS X(NSView)相关的问题.
我正在尝试使用Facebook的POP动画从中心扩展NSView(到其大小的75%),然后再回到100%,但是我无法让它工作.鉴于kPOPLayerScaleXY似乎不起作用,我做了以下但是这给了我不正确的结果(因为它似乎从左上角向下缩小,而当zoomIn它为假时,它变得太大:
CGRect baseRect = CGRectMake(0, 0, 30, 24);
CGFloat scale = (zoomIn) ? 0.75 : 1.0;
CGFloat x = baseRect.origin.x;
CGFloat y = baseRect.origin.y;
CGFloat width = baseRect.size.width;
CGFloat height = baseRect.size.height;
if (zoomIn) {
width -= floorf((1.0 - scale) * width);
height -= floorf((1.0 - scale) * height);
x += floorf((width * (1.0f - scale)) / 2);
y += floorf((height * (1.0f - scale)) / 2);
}
CGRect scaleRect = …Run Code Online (Sandbox Code Playgroud) 无论我做什么,下面的代码只返回'Success:0'(即,它不会启动托管应用程序):
NSURL *url = [NSURL URLWithString:@"myapp://launch"];
[[self extensionContext] openURL:url completionHandler:^(BOOL success) {
NSLog(@"Success? %i", success);
}];
Run Code Online (Sandbox Code Playgroud)
如果我在Safari中直接尝试myapp://启动网址,它可以运行并启动我的应用.然而,Today Widget拒绝启动它.它是沙箱,我也检查过'Outgoing Connections'功能,但没有运气.我需要做些什么才能让它发挥作用?
我有一个调用onNext()一些UI事件的PublishSubject .订户通常需要2秒钟才能完成其工作.onNext()在订户忙时,我需要忽略除最后一个之外的所有呼叫.我尝试了以下,但是我无法控制流量.请求似乎排队等待,每个请求都得到处理(因此背压似乎不起作用).如何让它忽略所有请求,但最后一个?(我不想使用,debounce因为代码需要立即做出反应,任何合理的小超时都不起作用).
而且我意识到使用subscribeOn一个主题没有任何影响,因此我正在使用observeOn其中一个运算符进行异步工作.这是正确的方法吗?
Subject<Boolean> loadingQueue = PublishSubject.<Boolean>create().toSerialized();
loadingQueue
.toFlowable(BackpressureStrategy.LATEST)
.observeOn(AndroidSchedulers.mainThread())
.map(discarded -> {
// PRE-LOADING
Log.d("RXLOADING", "PRE-LOADING: " + Thread.currentThread().getName());
return discarded;
})
.observeOn(Schedulers.computation())
.map(b -> {
Log.d("RXLOADING", "LOADING: " + Thread.currentThread().getName());
Thread.sleep(2000);
return b;
})
.observeOn(AndroidSchedulers.mainThread())
.subscribe(b -> {
Log.d("RXLOADING", "FINISHED: " + Thread.currentThread().getName() + "\n\n");
});
loadingQueue.onNext(true);
loadingQueue.onNext(true);
loadingQueue.onNext(true);
....
Run Code Online (Sandbox Code Playgroud)
我看到的输出是:
PRE-LOADING: main
PRE-LOADING: main
LOADING: RxComputationThreadPool-1
PRE-LOADING: main
PRE-LOADING: main
PRE-LOADING: main
PRE-LOADING: main
PRE-LOADING: main
PRE-LOADING: …Run Code Online (Sandbox Code Playgroud) 我使用以下CKNotification Info,这似乎工作正常:
CKNotificationInfo *note = [[CKNotificationInfo alloc] init];
note.alertBody = @"Something Happened";
note.shouldBadge = NO;
note.shouldSendContentAvailable = NO;
当iOS设备上的内容发生变化时,我的Mac应用会根据此通知的订阅收到推送通知.但是,didReceiveRemoteNotification从未调用过,因此我无法处理该事件.我需要能够刷新并获取新的更改.我怎么做?
iOS 13 似乎使用了一种新的UIPresentationController来呈现模式视图控制器,但它不依赖于拍摄呈现视图控制器的快照(就像大多数/所有库一样)。呈现视图控制器是“实时”的,并在模态视图控制器显示在透明/有色背景上方时继续显示动画/更改。
我可以通过CGAffineTransform在呈现视图控制器的视图上使用 a 来轻松复制这一点(因为目的是为 iOS 10 / 11 / 12 等制作一个向后兼容的版本),但是在旋转设备时频繁地,呈现视图开始变形和增长似乎是因为系统在对其应用frame活动transform时更新它。
根据文档,frame当有一个transform应用于视图时是未定义的。鉴于系统似乎正在修改框架而不是我,我该如何解决这个问题,而不会以我正在更新呈现视图边界的hacky解决方案结束?我需要这个呈现控制器保持通用,因为呈现控制器可以是任何形状或形式,并且不一定是全屏视图。
这是我到目前为止所拥有的 - 它是一个简单的UIPresentationController子类,似乎工作正常,但是旋转设备然后关闭呈现的视图控制器似乎会破坏呈现的视图控制器的边界(变得太宽或缩小,取决于您是否在横向/纵向时呈现模态控制器)
class SheetPresentationController: UIPresentationController {
override var frameOfPresentedViewInContainerView: CGRect {
return CGRect(x: 40, y: containerView!.bounds.height / 2, width: containerView!.bounds.width-80, height: containerView!.bounds.height / 2)
}
override func containerViewWillLayoutSubviews() {
super.containerViewWillLayoutSubviews()
if let _ = presentingViewController.transitionCoordinator {
// We're transitioning - don't touch the frame yet as it'll
// clash with our …Run Code Online (Sandbox Code Playgroud) 我创建了一个包含单个 SwiftUI 的 iOS 框架View。然后我添加了一个带有单个图像的资产目录。尝试从 SwiftUI 视图访问该图像没有任何作用 - 我看到一个空白图像。
Image("MyImage")
Xcode Preview 不显示任何内容,视图也不显示我编写的使用该框架的测试目标的任何内容。
所以问题是 - 如何将图像与使用 SwiftUI 的框架捆绑在一起?这不支持吗?我可以让它工作的唯一方法是将图像移动到测试目标的资产目录。不幸的是,这意味着我无法在开发框架时预览我正在处理的设计。
我创建了一个UIViewRepresentableforUIVisualEffectView以使某些组件充满活力。这是有效的,但是它似乎有时会垂直收缩控件,或者只是在运行时随机改变它们的边界。我似乎无法让它可靠地工作。我需要它来处理任何 SwiftUI 内容,甚至其他UIViewRepresentable用于代替内容的内容。包裹 a 的UIVisualEffectView内部UIView并使用自动布局似乎有帮助,但其他控件(例如UILabel包裹在 a 内部的自定义UIViewRepresnetable会被垂直剪裁)。
public struct VibrantView<Content: View>: UIViewRepresentable {
private let content: UIView!
private let vibrancyBlurEffectStyle: UIBlurEffect.Style
init(vibrancyBlurEffectStyle: UIBlurEffect.Style, @ViewBuilder content: () -> Content) {
self.content = UIHostingController(rootView: content()).view
self.vibrancyBlurEffectStyle = vibrancyBlurEffectStyle
}
public func makeUIView(context: Context) -> UIView {
let containerView = UIView()
let blurEffect = UIBlurEffect(style: vibrancyBlurEffectStyle)
let vibrancyEffect = UIVibrancyEffect(blurEffect: blurEffect)
let blurView = UIVisualEffectView(effect: vibrancyEffect)
blurView.translatesAutoresizingMaskIntoConstraints = false …Run Code Online (Sandbox Code Playgroud) macos ×4
cocoa ×3
objective-c ×3
osx-yosemite ×3
swift ×3
xcode ×3
ios ×2
nsview ×2
swiftui ×2
android ×1
autolayout ×1
cloudkit ×1
crashlytics ×1
facebook-pop ×1
icloud ×1
ios10 ×1
rx-java2 ×1
xcode7 ×1