小编jef*_*o37的帖子

StackView与MapView在初始加载时无法正常工作

快速更新,因为我看到很多人对此感兴趣,因为iOS 10已经上线了.我最终开了一个TSI,Apple今天回复说明我应该为此打开一个bug.他们没有提供任何有关变通方法的进一步信息或建议,其含义是这里存在问题.

与此同时,我仍在寻找一种解决方法.我将整个布局从StackView中拉出来并替换为自动布局约束,只是遇到了同样的问题.问题可能出在MapView上.


我有一个问题,在垂直StackView中放置一些标签和MapView.此视图与iOS 10/Xc8的行为不一致.

在6/S模拟器上,它正确呈现.在SE上,MapView实际上看起来比在6上更大,它掩盖了标签.旋转后解决(在故事板预览中显示正常)

我用一个非常简单的项目演示了这种行为.它包含一个Storyboard视图,其中包含一个垂直StackView,如下所示:

在此输入图像描述

StackView使用Fill对齐和Fill分布.没有间距.

每个标签的内容拥抱优先级为251,抗压缩性为750.

MapView具有250内容拥抱和750压缩.

我试过玩这些数字,但它从来没有奏效.理论上,它MapView具有最低的拥抱优先级,因此它应该用Fill分布消耗所有额外的空间.

相反,这就是我所看到的(在SE SIM上)

底部由MapView覆盖的两个标签

如果我旋转设备并返回 - 它看起来很好.所以看起来布局有一些时间问题.但是,我在这里没有做任何代码 - 标签的文本是硬编码的storyboard.我在代码中没有做任何事情.

如上所述,它在iPhone6上看起来很好.如果我随意调整标签的高度,它看起来也很好.我注意到当标签fontsize特别相同时,它很好.所以我想知道它是否使用初始标签fontsize来计算内在contentsize或类似的东西.

iPad Air sim也存在问题.事实上,整个地图最初都被地图覆盖,我根本看不到标签(直到旋转).

我不确定是否ScrollViews应该很好地配合StackViews.这就是说,我也尝试拉MapView离开那里,并阻断它的下方StackViewautolayout.令人惊讶的是,我有相同的最终结果.

最后的注意事项 - 我没有使用示例项目对此进行测试,但在我的原始项目中(表现出相同的行为),这发生在Xcode 8中,而不是在Xcode 7中.

scrollview mapkit ios autolayout uistackview

11
推荐指数
0
解决办法
479
查看次数

多个AVPlayers躲闪?

我有一个相对简单的设置,涉及1个AVPlayer在后台循环一些环境音频,第二个播放器在某些点播放较短的声音.

我观察到的是,当播放短音时,我听到环境剪辑被剪掉了大约一秒钟,同时有一个staticy pop.然后它继续播放,同时播放短音.这只发生在设备上 - 它在SIM卡上并不明显,这似乎指出了潜在的性能问题.

我无法弄清楚为什么第一个AVPlayer有这个blip.这是环境播放器的代码:

NSString *path = [[NSBundle mainBundle] pathForResource:kAmbientTrack ofType:@"mp3"];
_ambientPlayer = [AVPlayer playerWithURL:[NSURL fileURLWithPath:path]];
[self.ambientPlayer play];
Run Code Online (Sandbox Code Playgroud)

它稍微复杂一些,因为我也会在结束时重新收听通知并重新启动它,但是在发生任何循环之前,即使在初始播放期间也会出现此问题.

所以,虽然这是在后台进行的,我会播放另一个像这样的剪辑:

  self.announcementPlayer = [[AVPlayer alloc] initWithURL:[myObject audioPathUrl]];
  [self.announcementPlayer play];
Run Code Online (Sandbox Code Playgroud)

所以没有什么特别的 - 只有两个AVPlayers在播放.

唯一感兴趣的是我在应用启动时如何设置音频会话.

  [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback withOptions:AVAudioSessionCategoryOptionMixWithOthers error:nil];
Run Code Online (Sandbox Code Playgroud)

我这样做是为了让用户在后台播放来自其他应用的音乐.

我认为我的代码非常直接,而且我真的不知道为什么我会得到这个昙花一现.


我通过将音频播放器更改为AVAudioPlayers来解决这个问题.在大多数情况下,这解决了爆裂问题.但是,我仍然躲避.具体来说,如果我播放AVAudioPlayer,并且在播放时,我开始加载AVPlayer,它会关闭AVAudioPlayer大约一秒钟.这就是我在说的:

  [myAVAudioPlayer play];
  AVPlayer *player = [AVPlayer playerWithURL:[self.currentExercise videoPathUrl]];
Run Code Online (Sandbox Code Playgroud)

添加第二行会导致myAVAudioPlayer的第一秒左右静音.

ios avaudiosession avplayer

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