小编gab*_*ata的帖子

如何在SwiftUI中创建多行TextField?

我一直在尝试在SwiftUI中创建多行TextField,但是我不知道怎么做。

这是我目前拥有的代码:

struct EditorTextView : View {
    @Binding var text: String

    var body: some View {
        TextField($text)
            .lineLimit(4)
            .multilineTextAlignment(.leading)
            .frame(minWidth: 100, maxWidth: 200, minHeight: 100, maxHeight: .infinity, alignment: .topLeading)
    }
}

#if DEBUG
let sampleText = """
Very long line 1
Very long line 2
Very long line 3
Very long line 4
"""

struct EditorTextView_Previews : PreviewProvider {
    static var previews: some View {
        EditorTextView(text: .constant(sampleText))
            .previewLayout(.fixed(width: 200, height: 200))
    }
}
#endif
Run Code Online (Sandbox Code Playgroud)

但这是输出:

在此处输入图片说明

ios swiftui

31
推荐指数
11
解决办法
5895
查看次数

从GMSMapView中删除所有GMSMarker?

我在GMSMapView上放置了100个GMSMarkers.如何删除所有GMSMarkers?

在适用于iOS的Google Sdk 1.6版中.

不推荐使用将保存GMSMarkers列表的标记数组(在GMSMapView(Overlays)文件中).通过使用这个我从GMSMapView中删除所有GMSMarker.

有没有其他方法可以从iOS中的GMSMapView中删除所有GMSMarker?

marker ios google-maps-sdk-ios gmsmapview

13
推荐指数
3
解决办法
1万
查看次数

版本1.6中不推荐使用GMSMapView方法

我更新了我的应用,以使用适用于iOS的Google Maps API 1.6版.它现在告诉我三个重要的方法已GMSMapView被弃用:

'markers' is deprecated
'polylines' is deprecated
'groundOverlays' is deprecated
Run Code Online (Sandbox Code Playgroud)

起初我认为这可能是我身边的一个问题,因为在Google的文档中没有提到这一点,但后来我看到了头文件,并注意到它们实际上已被弃用,但它们没有指定另一种方法来按顺序使用实现同样的目标:

- (NSArray *)markers __GMS_AVAILABLE_BUT_DEPRECATED;
- (NSArray *)groundOverlays __GMS_AVAILABLE_BUT_DEPRECATED;
- (NSArray *)polylines __GMS_AVAILABLE_BUT_DEPRECATED;
Run Code Online (Sandbox Code Playgroud)

有人可以指出我如何在不使用弃用方法的情况下执行此操作?谢谢!

编辑:我刚刚找到了一种方法,您可以[mapView clear]从地图中删除所有标记和折线,有没有办法只删除所有折线而不删除标记?

google-maps ios google-maps-sdk-ios ios7

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

种子随机64位

通过iPhone 5S更新,我希望我的应用程序能够支持新的64位处理器.

但是,如果将较大的数据类型转换为较小的数据类型,则使用64位可能会导致截断,如将long转换为int的情况.大多数情况下,这可以通过使用更大的数据类型轻松修复,但在随机数生成器的情况下,有时使用"time(NULL)"函数播种,我不能这样做.

目前的代码很简单:

srandom(time(NULL));
Run Code Online (Sandbox Code Playgroud)

但是在带有64位的XCode 5中,它会导致以下错误:Implicit conversion loses integer precision: 'time_t' (aka 'long') to 'unsigned int'.这是因为"time(NULL)"返回一个长整数,"srandom"需要unsigned int.因此有两种选择:

  1. 将长整数转换为unsigned int
  2. 将"time(NULL)"替换为执行相同作业但返回unsigned int的另一个函数.

你会推荐哪一个,我应该用什么功能来做呢?

注意:我使用random()而不是arc4random()因为我还需要能够为随机数生成器播种以获得可重复的结果.

random 64-bit objective-c ios

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

Game Center matchData的良好做法

我是GKTurnBasedMatch的新手,我正在试图找出在转弯期间玩家之间发送的"matchData"的良好做法.我发现的所有教程主要包括发送一串文本,我想发送更多.如果有人能给我一个更高级的教程,那就太好了.

我想做的一个例子就是战斗.这两个玩家有他们的化身,他们有不同的细节(健康,攻击,防御等),我该如何发送这些数据?我认为可能的唯一方法是将所有匹配细节(很多)编成NSDictionary并发送,以便它们可以再次放回到自定义匹配对象中.我应该实施NSCoding吗?

谢谢!

nscoding nsdata gamekit ios game-center

2
推荐指数
1
解决办法
1473
查看次数

CAEmitter顺利启动动画

我想让CAEmitterLayer制作一种光剑动画.我希望从一个点出现一束光并停止.我的问题是我不能让动画的开头顺利发生.一旦我运行代码,就会看起来好像已经过了几秒而没有任何动画.

我尽可能地删除了代码,看看我是否能找到问题的根源,但即使最简单,它仍然会发生.这是我现在的代码示例,它仍然存在问题:

CAEmitterLayer *emitterLayer = [CAEmitterLayer layer];
emitterLayer.emitterPosition = CGPointMake(10, 10);

CAEmitterCell *emitterCell = [CAEmitterCell emitterCell];
emitterCell.contents = (id)[[UIImage imageNamed:@"LightParticle"] CGImage];

emitterCell.birthRate = 100;
emitterCell.lifetime = 10;
emitterCell.velocity = 10;

emitterLayer.emitterCells = @[emitterCell];
[self.view.layer addSublayer:emitterLayer];
Run Code Online (Sandbox Code Playgroud)

我猜我一定错过了一些明显的东西,但我几天都无法解决这个问题.

将birthRate设置为0将导致光束平滑消失,但将其设置回任何数字将导致它再次出现没有动画.

谢谢您的帮助.

cocoa-touch objective-c ios caemitterlayer caemittercell

2
推荐指数
1
解决办法
1007
查看次数