小编Cle*_*t M的帖子

如何在 SwiftUI 4.0 中重新创建 iOS 16 锁屏小部件 Vibrant 效果?

我正在寻找一种方法来重现 iOS 16 上的锁屏小部件上出现的“充满活力”的 iOS 16 效果,因为我的应用程序应该能够在用户创建过程中显示小部件的预览。

示例:请参阅下面中央屏幕上的 4 个圆形小部件。

查看中央屏幕上的 4 个圆形小部件。

以下是 Apple 文档中关于此效果的说明:

充满活力:对于锁定屏幕小部件,iOS 将文本、图像和仪表去饱和为单色,并通过为锁定屏幕背景适当地着色内容来创建充满活力的效果。人们还可以将锁定屏幕着色为彩色色调。 来自苹果文档

我不知道如何重现这种效果。尝试了该代码但不满意:

MyOriginalView()
    .compositingGroup()
    .saturation(0.0)
    .blendMode(.plusLighter) // or .blendMode(.hardLight)
Run Code Online (Sandbox Code Playgroud)

以下是我想重现的对 iOS 16 充满活力的效果的更准确解释。

使用源视图和参数颜色,将源视图转换为灰度。白色像素似乎是使用参数颜色渲染的,而黑色像素则使用基于参数颜色的模糊透明深色。

请参阅下面的视图转换示例。

查看转换示例

以下是一些用于创建测试图像并从此视图渲染 iOS 16 小部件的代码。这正是我想在我的应用程序中模仿的效果。

SwiftUI 4.0 代码(iOS16+):(我认为您需要为代码添加一个 Widget Target 来编译)

import SwiftUI
import WidgetKit

struct SourceView: View {
    var body: some View {
        VStack (spacing: 0) {
            Color.black
            HStack (spacing: 0) {
                Color.black
                Color.black.opacity(0.75)
                Color.black.opacity(0.5)
                Color.black.opacity(0.25)
                Color.black.opacity(0.0)
            }
            HStack (spacing: 0) {
                Color.red
                Color.blue
                Color.green
                Color.yellow
                Color.white
            }
            HStack (spacing: …
Run Code Online (Sandbox Code Playgroud)

user-interface widget effect swiftui ios16

9
推荐指数
1
解决办法
2371
查看次数

NSMutableArray集合和@Synchronized块

在Objective C中我使用了来自各种线程的NSMutableArray实例,并且我正在使用@synchronized来使其线程安全.目前我对这个数组的所有访问都受到@synchronized块的保护,甚至是objectAtIndex:方法.不过我想知道哪些方法确实需要用@synchronized保护.我需要保护读取权限吗?

如果'ObjectAtIndex'没有受到保护并且在'removeObject'的同时被调用会发生什么?

如果所有方法都受@synchronized保护,性能如何?(我正在写一个tcp/udp游戏服务器,如果它会降低性能或生成锁定,我真的不想过度保护这些数组).

例如,我想'containsObject:'方法将枚举以查找对象,并且我应该避免在另一个线程中对'removeObject:'进行concurent调用.

也许一个好的解决方案是拥有太多不同的锁(用于读写访问)......

欢迎提供帮助和建议!

非常感谢.

请在下面找到示例代码来说明:

@interface TestClass : NSObject
{
    NSMutableArray * array;
}

@end

@implementation TestClass

- (id)init
{
    self = [super init];
    if (self)
    {
        array = [NSMutableArray array];
    }
    return self;
}

-(id)objectAtIndex:(NSUInteger)index
{
    @synchronized(array) **// IS IT USEFUL OR NOT ??**
    {
        return [array objectAtIndex:index];
    }
}

-(void)removeObject:(id)object
{
    @synchronized(array)
    {
        [array removeObject:object];
    }
}

-(void)compute
{
    @synchronized(array)
    {
        for (id object in array)
        {
            [object compute];
        }
    }
}

@end
Run Code Online (Sandbox Code Playgroud)

multithreading objective-c synchronized nsmutablearray ios

6
推荐指数
1
解决办法
2463
查看次数

与Fetched Properties的交叉存储弱关系?

我想将我的参考数据与我的核心数据模型中的用户数据分开,以简化我的应用程序的未来更新(因为,我计划将数据库存储在云上,并且不需要将参考数据存储在云上这是我申请的一部分).因此,我一直在寻找一种使用fetched属性编写跨店关系的方法.我还没有找到任何示例实现.

我有一个使用2种配置的Core Data模型:

  • 数据模型配置1:UserData(相对于用户的实体)

  • 数据模型配置2:ReferenceData(相对于应用程序本身的实体)

我为这两个配置设置了两个不同的SQLite持久存储.

  • UserData配置(和存储)包含实体"用户"

  • ReferenceData config(和store)包含实体"Type"和"Item".

我想创建两个单向弱关系,如下所示:

  • "用户"有一个独特的"类型"

  • "用户"有很多"项目"

这是我的问题:

  • 如何设置我的属性?

  • 每个关系是否需要2个属性(一个用于存储唯一ID,另一个用于访问我获取的结果)?

  • 可以订购这种弱关系吗?

  • 有人可以给我一个示例实现吗?

作为Marcus回答的后续内容:

通过论坛和文档,我读到我应该使用我的实体实例的URI表示而不是objectID.这背后的原因是什么?

// Get the URI of my object to reference 
NSURL * uriObjectB [[myObjectB objectID] URIRepresentation];
Run Code Online (Sandbox Code Playgroud)

接下来,我想知道,如何将我的对象B URI(NSURL)存储在我的父对象A中作为弱关系?我应该使用什么属性类型?我该怎么转换呢?我听说过归档......?

然后,稍后我应该以相同的方式检索托管对象(通过非转换/取消归档URIRepresentation)并从URI获取对象

// Get the Object ID from the URI 
NSManagedObjectID* idObjectB = [storeCoordinator managedObjectIDForURIRepresentation:[[myManagedObject objectID] URIRepresentation]];

// Get the Managed Object for the idOjectB ...
Run Code Online (Sandbox Code Playgroud)

最后但并非最不重要的是,我要在我的实体A中声明两个属性,一个用于持久化URI需求,另一个用于检索direclty对象B?

NSURL * uriObjectB [objectA uriObjectB];

ObjectB * myObjectB = [objectA objectB];
Run Code Online (Sandbox Code Playgroud)

你可以阅读,我真的很想念一些简单的例子来实现弱关系!我真的很感激一些帮助.

core-data weak relationships ios

4
推荐指数
1
解决办法
2002
查看次数