希望有人可以帮助我 - 我想替换字符串中的某个字符,我想知道最好的方法是什么?
我知道角色的位置,例如,如果我想将字符串中的第3个字符从A更改为B - 我将如何编码?
我刚看了2011年WWDC关于"实现UIViewController遏制"的演示文稿(这里是视频的链接)
他们提到了将viewControllers添加到屏幕的两种方法,我希望对最佳实践做一些澄清......
addChildViewController/removeFromParentViewController
与@property(非原子,只读)NSArray*childViewControllers一起使用[self transitionFromViewController:currentView toViewController:nextView duration: options: animations: completion:];
pushViewController:animated:/ popViewControllerAnimated
他们很快就在演示文稿中快速浏览了这个
在我的应用程序中,我使用所有自定义viewControllers,直到今天我一直使用以下方法管理它们:
[nextController performSelector:@selector(setDelegate:) withObject:self];
[currentPageController.view removeFromSuperview];
[self.view addSubview:nextController.view];
Run Code Online (Sandbox Code Playgroud)
但我现在明白了,这是不好的做法,我想知道什么是使用"addChildViewController",什么是使用"pushViewController"正确的方法正确的方法是什么?
我非常感谢你对此事的看法!
我目前在我的应用程序中播放背景音乐和其他声音的方式非常奇怪:
最奇怪的部分: 当iPhone的音量一直向下(静音)时,应该没有任何声音.背景音乐开启但没有设备音量,它可以达到您所期望的效果 - 您无法听到音乐或声音效果.但是如果关闭背景音乐,即使设备本身完全关闭,声音效果仍会播放并且非常响亮!
这是我的代码......
对于我的背景音乐:
AVAudioPlayer *musicPlayer;
- (void)playMusic {
if (musicPlayer == nil) {
NSURL *musicPath = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"SongFile" ofType:@"mp3"]];
musicPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:musicPath error:nil];
musicPlayer.volume = 0.2f;
musicPlayer.numberOfLoops = -1;
}
[musicPlayer play];
}
- (void)stopMusic {
[musicPlayer stop];
}
Run Code Online (Sandbox Code Playgroud)
对于播放期间的声音:
#import "SoundEffect.h"
SoundEffect *sounds;
- (void)playSoundWithInfo:(NSString *)sound; {
NSString *path = [[NSBundle mainBundle] pathForResource:sound ofType:@"caf"];
sounds = nil;
sounds = [[SoundEffect alloc] initWithContentsOfFile:path];
[sounds play];
}
Run Code Online (Sandbox Code Playgroud)
任何想法将不胜感激.
这似乎应该很容易,但我今晚无法弄清楚并且一直在搜索,但没有在论坛上找到任何相关内容.
我想要做的就是改变UIImageView的比例以缩小或增长它.
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1];
[UIView setAnimationCurve:UIViewAnimationCurveLinear];
image.whatDoIDoToMakeItGrowOrShrink?=)
[UIView commitAnimations];
Run Code Online (Sandbox Code Playgroud) 我正在研究一个数学应用程序,需要将指数输出到屏幕上.
我发现这段代码可以正常工作:
NSLog(@"x\u2070 x\u00B9 x\u00B2 x\u00B3 x\u2074 x\u2075 x\u2076 x\u2077 x\u2078 x\u2079");
Run Code Online (Sandbox Code Playgroud)
它显示:x⁰x¹x²x³x⁴x⁵x⁶x⁷x⁸x⁹
这也有效:
NSString *testString = @"8.33x10\u00B3";
NSLog(@"test string: %@", testString);
Run Code Online (Sandbox Code Playgroud)
它显示:测试字符串:8.33x10³
即使将其设置为标签,也可以在iPhone屏幕上正确显示:
NSString *testString = @"8.33x10\u00B3";
Answer1Label.text = testString;
Run Code Online (Sandbox Code Playgroud)
但是,当我从名为"8.33x10\u00B3"的.plist中拉出字符串并将其显示在屏幕上时,它只显示为"8.33x10\u00B3"而不是8.33x10³
是否需要在\ u00B3前放置一个额外的角色才能识别它?
谢谢你的帮助!
我正在尝试直接从我的应用链接到应用的评论页面.
这与我的一些App ID完美配合,就像这个[375031865]:
NSString *reviewURL = @"itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=375031865&onlyLatestVersion=true&pageNumber=0&sortOrdering=1&type=Purple+Software";
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:reviewURL]];
Run Code Online (Sandbox Code Playgroud)
这也有效(相同的APP ID,不同的链接格式):
NSString *reviewURL = @"itms-apps://ax.itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=375031865";
Run Code Online (Sandbox Code Playgroud)
但不适用于其他App ID,如此[392551011]:
NSString *reviewURL = @"itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=392551011&onlyLatestVersion=true&pageNumber=0&sortOrdering=1&type=Purple+Software";
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:reviewURL]];
Run Code Online (Sandbox Code Playgroud)
要么:
NSString *reviewURL = @"itms-apps://ax.itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=392551011";
Run Code Online (Sandbox Code Playgroud)
我不知道在其中使用不同APP ID的相同确切链接如何适用于某些应用程序而不适用于其他应用程序.出现的错误是"无法连接到iTunes Store"
有任何想法吗?谢谢!
所以......这太奇怪了.
我有一个在模拟器和设备上运行完美的应用程序.我实际上已经提交了应用程序,它在App Store中出售.
今天我回去做了一些更新以进行更新.该应用程序现在不会加载到我的设备上,它将不会加载到模拟器中.
在模拟器中它显示"附加到app_name"(它列出了实际的应用程序名称)并且它无限期地停留在"附加"的过程中,而模拟器屏幕完全是黑色的.
在设备上运行应用程序时,它显示"Build Succeeded",然后"Finished running app_name",而设备上没有显示任何内容.
我重新启动XCode并尝试重新启动计算机,但仍然没有运气......其他应用程序确实有效,但不是这个.
有任何想法吗?
编辑:我刚刚开始一个全新的项目,复制了所有的资产和代码,尝试运行和STILL同样的事情发生.我当然认为重新创建项目会起作用......
最终编辑:运行"清理",删除DerivedData文件夹,并在第二次重新启动计算机后,新项目(复制了所有资产)现在正在运行.原始项目仍然无效.所以我不确定是什么导致了这个问题以及解决了什么问题,但至少对我来说,我现在可以继续前进.我该怎么办这个帖子?它可以删除吗?谢谢所有想要帮助的人!
NSStringDrawingContext的actualScaleFactor何时更改?
"如果在minimumScaleFactor属性中指定了自定义值,则在绘制完成时,此属性包含用于绘制字符串的实际比例因子值."
我的代码:
myButton.titleLabel!.font = UIFont(name: "AmericanTypewriter-Bold", size: 40)
myButton.titleLabel?.adjustsFontSizeToFitWidth = true
myButton.setTitle("\(textString)", forState: .Normal)
let attributes = [NSFontAttributeName : myButton.titleLabel!.font]
let attributedString = NSMutableAttributedString(string:textString, attributes:attributes)
let context = NSStringDrawingContext()
context.minimumScaleFactor = myButton.titleLabel!.minimumScaleFactor
print("context: \(context.actualScaleFactor)")
let resultingRect = attributedString.boundingRectWithSize(myButton.titleLabel!.bounds.size, options: .UsesLineFragmentOrigin, context: context)
print("actual context after drawing: \(context.actualScaleFactor)")
//want to get the font size after adjustsFontSizeToFitWidth has done its magic:
//let actualFontSize = myButton.titleLabel!.font.pointSize * context.actualScaleFactor
Run Code Online (Sandbox Code Playgroud)
适合不缩小的文本的控制台日志和调整为适合标签宽度的较长文本都是相同的:
context: 0.0
actual context after drawing: 1.0
Run Code Online (Sandbox Code Playgroud)
知道在文本大小适合标签后,从上下文中获取真正的scaleFactor的步骤是什么?
我的应用程序使用一个可编码的结构,如下所示:
public struct UserProfile: Codable {
var name: String = ""
var completedGame: Bool = false
var levelScores: [LevelScore] = []
}
Run Code Online (Sandbox Code Playgroud)
AJSONEncoder()已用于将UserProfiles的编码数组保存为用户默认值。
在即将到来的更新中,我想向这个UserProfile结构添加一个新属性。这在某种程度上可能吗?
或者我是否需要创建一个具有相同属性和一个新属性的新 Codable 结构,然后将所有值复制到新结构中,然后开始使用该新结构代替UserProfile之前使用该结构的任何地方?
如果我只是向结构体添加一个新属性,那么我将无法加载之前编码的UserProfiles数组,因为结构体将不再具有匹配的属性。当我使用此代码加载已保存的用户时:
if let savedUsers = UserDefaults.standard.object(forKey: "SavedUsers") as? Data {
let decoder = JSONDecoder()
if let loadedUsers = try? decoder.decode([UserProfile].self, from: savedUsers) {
Run Code Online (Sandbox Code Playgroud)
loadedUsers如果在UserProfile编码和保存时具有的属性不包含结构的所有当前属性,则不解码UserProfile。
有关更新保存的结构属性的任何建议?或者我必须走很长的路并重新创建,因为我之前没有提前计划要包含此属性?
谢谢你的帮助!
我打开了一个我的旧项目,并Convert to Objective-C ARC从Edit/Refactor菜单中选择.我收到以下错误:
Apple LLVM compiler 3.0 Error
Error in format of file: /Users/myUserName/Library/Developer/Xcode/DerivedData/ProjectName-fkjvtdsoypoyrdcedtarbtypupor/Build/Intermediates/ProjectName.build/Debug-iphoneos/ProjectName.build/ProjectName-arc.migrate/remap
Run Code Online (Sandbox Code Playgroud)
这是我需要在Finder中手动删除某些文件/文件夹然后再试一次的情况之一吗?我刚刚删除了项目的"Build"文件夹中的所有内容,然后Product/Clean又重新尝试了,但仍然遇到了同样的错误.
iphone ×6
ios ×3
nsstring ×2
swift ×2
addchild ×1
animation ×1
app-store ×1
audio ×1
font-size ×1
image ×1
ipad ×1
llvm ×1
objective-c ×1
properties ×1
review ×1
scaling ×1
soundeffect ×1
string ×1
struct ×1
superscript ×1
uiimageview ×1
uilabel ×1
url ×1
userdefaults ×1
xcode ×1