小编Sca*_*aux的帖子

带有两个视图的 SwiftUI 卡片翻转

我正在尝试在两个 SwiftUI 视图之间创建卡片翻转效果。单击原始视图时,它会像翻转卡片一样在 Y 轴上 3D 旋转,并且第二个视图应在制作 90 度后开始可见。

使用.rotation3DEffect()我可以轻松旋转视图,问题是,animation()一旦角度达到 90 度,我不知道如何触发视图更改...

@State var flipped = false

 var body: some View {

    return VStack{
        Group() {
            if !self.flipped {
                MyView(color: "Blue")
            } else {
                MyView(color: "Red")
            }
        }
        .animation(.default)
        .rotation3DEffect(self.flipped ? Angle(degrees: 90): Angle(degrees: 0), axis: (x: CGFloat(0), y: CGFloat(10), z: CGFloat(0)))
        .onTapGesture {
            self.flipped.toggle()
        }

    }
Run Code Online (Sandbox Code Playgroud)

如何实现两个视图之间的这种旋转?

ios swift swiftui

16
推荐指数
2
解决办法
4007
查看次数

故事板UICollectionViewCell显示,然后变为空白

问题:

我正在UIViewController我的Storyboard/Interface Builder上工作,其中有一个UICollectionView定义了一个UICollectionViewCell.每当我在这个单元格中更改某些内容时,其所有子视图都会变为空白,从而无法看到任何内容.此外,当我更新约束时,即使我刷新,框架也不会移动,就像整个界面构建器被破坏一样.它只是为了这个UIViewController,有时是另一个.Interface Builder Builds显示来自Pods的警告(我无法帮助它).我没有受到限制.

(非常)临时解决方案:

如果我退出Xcode,清理,重建并重新打开Storyboard,它将恢复到"几乎"正常(意味着并非所有视图都显示正常,但至少我可以看到它们并且它不是完全白色的),直到我切换到另一个文件然后回来.当我回到故事板时将再次空白.有时我必须删除我的DerivedData,并且单元格将显示完美.只有几分钟.

另外,我没有任何约束警告或任何东西.

编辑:我从单元格中的所有视图中删除了所有类,以防我的自定义视图中的某些内容导致这些问题.我的观点主要是实现图层和渐变,所以我认为我可能在做错了IB渲染时做错了.在单元格的顶部有一个UIView我自己制作的习惯,它使用了一个CAGradientLayer.如果我从此视图中删除该类,则该单元格将再次开始显示.但是我无法确定这是什么原因,因为当我离开故事板并回到它上面时,细胞将再次变白.没有把课程放回原位.

EDIT2:我卸载并重新安装了Xcode和cocoapods.更新了播客.创建了一个新的xcworspace.

截图

在此输入图像描述

在此输入图像描述

我的环境详情

我正在使用Swift,XCode 9.3,Cocoapods 1.5.0,High Sierre 10.13.4随意询问任何其他细节My Pods(由于swift 4兼容性而产生大量警告):

  pod 'FBSDKLoginKit'
  pod 'FBSDKCoreKit'
  pod 'FSPagerView'
  pod 'CropViewController'
  pod 'SwiftLint'
  pod 'Parse'
  pod 'Parse/FacebookUtils'
  pod 'ImagePicker'
  pod 'XLPagerTabStrip', '~> 8.0'
  pod 'Eureka'
Run Code Online (Sandbox Code Playgroud)

interface-builder storyboard ios swift xcode9

7
推荐指数
1
解决办法
313
查看次数

Mongoose select:false不在位置嵌套对象上工作

我希望location默认情况下隐藏我的架构的字段.我添加了select: false属性,但在选择文档时总是返回...

var userSchema = new mongoose.Schema({

cellphone: {
  type: String,
  required: true,
  unique: true,
},

location: {
  'type': {
    type: String,
    required: true,
    enum: ['Point', 'LineString', 'Polygon'],
    default: 'Point'
   },
   coordinates: [Number],
   select: false, <-- here
   },
});

userSchema.index({location: '2dsphere'});
Run Code Online (Sandbox Code Playgroud)

致电时:

User.find({ }, function(err, result){ console.log(result[0]); });

输出是:

 {  
    cellphone: '+33656565656',
    location: { type: 'Point', coordinates: [Object] } <-- Shouldn't
 }
Run Code Online (Sandbox Code Playgroud)

编辑: 解释(感谢@alexmac)

SchemaType select选项必须应用于字段选项而不是类型.在您的示例中,您已定义了复杂类型的Location,并为类型添加了select选项.

mongoose mongodb node.js mongoose-schema

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

Flutter 返回导航不会触发 RouteAware didPop()

我的目标是跟踪出于分析目的而呈现和关闭的路线,如本文所述:https : //medium.com/flutter-community/how-to-track-screen-transitions-in-flutter-with-routeobserver-733984a90dea

我正在推送 aCupertinoPageRoute并向它传递一个实现RouteAwareMixin的小部件。

final RouteObserver<PageRoute> routeObserver = RouteObserver<PageRoute>();
return CupertinoApp(
    ...
    navigatorObservers: [routeObserver],
}
Run Code Online (Sandbox Code Playgroud)

像这样推:

Navigator.of(context).push(
  CupertinoPageRoute(builder: (context) => MyWidget()),
);
Run Code Online (Sandbox Code Playgroud)

小部件

class MyWidget extends StatefulWidget {
  MyWidget({Key key}) : super(key: key);

  @override
  _MyWidgetState createState() => _MyWidgetState();
}

class _MyWidgetState extends State<MyWidget> with RouteAware {
  @override
  void didChangeDependencies() {
    super.didChangeDependencies();
    routeObserver.subscribe(this, ModalRoute.of(context));
  }

  @override
  void dispose() {
    routeObserver.unsubscribe(this);
    super.dispose();
  }

  @override
  void didPop() {
    print('never called');
  }

  @override
  void didPopNext() {
    print('never called'); …
Run Code Online (Sandbox Code Playgroud)

dart flutter

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

Swift 3将SecKey导出为String

我正在使用swift 3开发iOS应用程序.

我需要将一个SecKey(用户RSA公钥引用)导出到一个字符串(例如base64),以便通过生成的QRCode共享它.

它还必须以另一种方式工作,因为扫描的其他用户QRCode将能够SecKey从QRCode中提取的字符串重建引用.

我发现很少有教程,但我不明白我需要从SecKey引用中提取什么,我不知道如何将它转换为String.

public-key-encryption ios swift seckeyref swift3

5
推荐指数
1
解决办法
6225
查看次数

Firestore如何存储对文档的引用/如何检索它?

我是Firestore / Firebase的新手,我正在尝试创建一个新文档,其中一个字段是document reference另一个文档。我已经阅读了Firebase的所有指南和示例,但没有发现任何内容。

同样,当我检索创建的文档时,我将能够访问我添加在其中的引用中的内容。我不知道该怎么做。

这是我尝试创建部分的一些代码

    let db = Firestore.firestore()

    // Is this how you create a reference ??
    let userRef = db.collection("users").document(documentId)

    db.collection("publications").document().setData([
        "author": userRef,
        "content": self.uploadedImagesURLs
    ]) { err in
        if let err = err {
            print("Error writing document: \(err)")
        } else {
            print("Document successfully written!")
        }
    }
Run Code Online (Sandbox Code Playgroud)

firebase swift google-cloud-firestore

5
推荐指数
1
解决办法
5448
查看次数

从黑色到完全透明的快速渐变

我正在尝试使用swift应用CAGradientLayer,并且我希望它从黑色渐变为透明。

我以为,将任何颜色与alpha: 0都会呈现相同的“透明”颜色。事实并非如此。白色与alpha: 0仍然有点白色,红色与alpha: 0仍然有点红色...

我不需要任何色彩,只要透明即可。黑色不那么黑,直到没有颜色为止,例如,您可以完全看到其下方的视图。

gradientLayer.colors = [UIColor(hex: 0x000000, alpha: 0.4).cgColor,
                        UIColor(hex: 0x6D6D6D, alpha: 0.3).cgColor,
                        UIColor.white.withAlphaComponent(0.0).cgColor]
gradientLayer.locations = [0.0, 0.3, 1.0]
Run Code Online (Sandbox Code Playgroud)

如果将图层应用于灰色图片,则很容易看到它不是透明的而是白色的:

在此处输入图片说明

编辑1:

gradientLayer.frame = self.gradientView.bounds
gradientLayer.masksToBounds = true
gradientLayer.colors = [UIColor.black.withAlphaComponent(1.0).cgColor, UIColor.black.withAlphaComponent(0.0).cgColor]
gradientLayer.locations = [0.0, 1.0]
gradientLayer.startPoint = CGPoint(x: 0.0, y: 0.0)
gradientLayer.endPoint = CGPoint(x: 0.0, y: 1.0)
self.gradientView.layer.addSublayer(gradientLayer)
Run Code Online (Sandbox Code Playgroud)

输出:

在此处输入图片说明

calayer ios cagradientlayer swift

5
推荐指数
1
解决办法
1821
查看次数

Flutter BloC 在注销时刷新流

我正在使用 blocs 和 rxdart。有一些块我不会“按屏幕/小部件”实例化,而是在应用程序中全局实例化,因为我在应用程序会话的整个生命周期中都需要相同的实例。因此,我不会通过关闭流来处理它们。

当我注销用户时,我想确保所有流/主题都已重置。我怎样才能实现这个目标?

这是我有一个简单的块:

class FriendsBloc {
  final FriendsRepository _friendsRepository = FriendsRepository();

  final BehaviorSubject<FriendsResponse> _friendsSubject = BehaviorSubject<FriendsResponse>();

  BehaviorSubject<FriendsResponse> get friends => _friendsSubject;

  Future<void> getFriends() async {
    try {
      FriendsResponse response = await _friendsRepository.getFriends();
      _friendsSubject.sink.add(response);
    } catch (e) {
      _friendsSubject.sink.addError(e);
    }
  }

  dispose() {
    _friendsSubject.close();
  }
}

final friendsBloc = FriendsBloc();
Run Code Online (Sandbox Code Playgroud)

dart flutter

5
推荐指数
0
解决办法
1117
查看次数

Apple Silicon Android Studio 模拟器:错误:找不到模拟器可执行文件

我刚刚安装Android Studio 4.2.2Android Studio Preview (Arctic Fox Beta 5)我的苹果的Macbook M1。

创建模拟器 ( arm64) 时,我立即收到错误消息:

AVD Manager: The emulator process for AVD Pixel_4a_API_30 has terminated
Run Code Online (Sandbox Code Playgroud)

然后我转到了 Android Studio 的日志文件(帮助 > 在 Finder 中显示日志),我看到当 Android Studio 尝试运行以下内容时发生错误:

~/Library/Android/sdk/emulator/emulator -netdelay none -netspeed full -no-snapshot-load -avd Pixel_4a_API_30

输出:

emulator: Android emulator version 30.3.5.0 (build_id 7036990) (CL:N/A)
emulator: ERROR: can't find the emulator executable.
Run Code Online (Sandbox Code Playgroud)

尝试了到目前为止我在网上找到的所有可能的解决方案......

android android-studio android-sdk-manager apple-silicon apple-m1

5
推荐指数
2
解决办法
712
查看次数

Apollo客户端,订阅fragment

我正在尝试从缓存中读取数据,使用cache.readFragment并订阅更改,就像这样useQuery做一样。我尝试使用useQuerywithfetchPolicy: 'cache-only'但尽管我在缓存中看到我的实体,但数据返回为空。这cache.readFragment正常,但它不订阅,这意味着应用于缓存的任何更改都不会重新触发它。

我怎样才能实现这种行为,并让它在某些内容突变到缓存后立即工作?

  // one time read
  const data = client.cache.readFragment({
    id: client.cache.identify({
      __typename: 'Creator',
      id: creatorId,
    }),
    fragment: IS_FOLLOWING_FRAGMENT,
  }) as MyCreatorIsFollowing;
Run Code Online (Sandbox Code Playgroud)
  // comes back as null although I see it in the cache
  const { data } = useQuery(GET_IS_FOLLOW_CREATOR, {
    fetchPolicy: 'cache-only',
    variables: { id: creatorId },
  });
Run Code Online (Sandbox Code Playgroud)

apollo react-apollo apollo-client

5
推荐指数
0
解决办法
129
查看次数