现在,当用户按下按钮时,我会播放自定义相机快门声.
但是,如果可能的话,我宁愿使用默认播放的相机快门声,只要您使用iPhone拍照.
有没有办法可以访问并使用默认的iPhone相机快门声?如果是,那么它实际位于何处?
我需要找出它的文件路径,以便我可以使用它与下面的代码,只需更改输入pathForResource:
NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:@"shutter" ofType: @"wav"];
NSURL *fileURL = [[NSURL alloc] initFileURLWithPath:soundFilePath ];
self.myAudioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:nil];
[self.myAudioPlayer play];
Run Code Online (Sandbox Code Playgroud)
谢谢您的帮助.
我正在和另一个合作伙伴一起开发应用程序.他一直在做大师,我开了一个新的分支.在我的分支上我安装了cocoapods.我只是尝试从主人那里拉,我遇到了合并冲突.
当我打开Xcode时,工作区文件有错误,它说:
"Workspace Integrity - Couldn't load project"
Run Code Online (Sandbox Code Playgroud)
我该如何解决这种合并冲突?
我使用的UIImagePickerController是让用户选择要在应用中分享的照片或视频.当用户在其库中选择媒体项时,我在其中一个UIImagePickerController's委托方法中执行此代码:
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
PHAsset *asset;
if ([info[@"UIImagePickerControllerMediaType"] isEqualToString:@"public.movie"]) {
// Video
asset = [[PHAsset fetchAssetsWithALAssetURLs:@[info[@"UIImagePickerControllerReferenceURL"]] options:nil] lastObject];
} else if ([info[@"UIImagePickerControllerMediaType"] isEqualToString:@"public.image"]) {
// Photo
PHFetchResult *result = [PHAsset fetchAssetsWithALAssetURLs:@[info[@"UIImagePickerControllerReferenceURL"]] options:nil];
asset = [[PHAsset fetchAssetsWithALAssetURLs:@[info[@"UIImagePickerControllerReferenceURL"]] options:nil] lastObject];
}
}
Run Code Online (Sandbox Code Playgroud)
两者都if statements适用于照片和视频,除非您从标题相册中选择一个项目"My Photo Stream".
从中选择项目时"My Photo Stream",PHAsset始终返回nil.
我发现以下问题似乎有一个可行的解决方案的答案:ALAssetsLibrary assetForURL:在iOS 8.1中"我的照片流"中的照片总是返回nil
但上面的链接使用了AssetsLibraryApple不再推荐的框架:
"在iOS 8.0及更高版本中,使用Photos框架而不是Assets Library框架.Photos框架为使用用户的照片库提供了更多功能和更好的性能.请参阅照片框架参考."
我需要能够返回相册中PHAsset媒体项目的对象"My …
uiimagepickercontroller alassetslibrary ios8 photosframework phasset
我需要能够从Safari浏览器启动我的iOS应用程序.所以我.plist在xcode中找到了我的文件并在我的URL Schemes中添加了一个项目并输入了字符串myappname.
现在,如果我去Safari浏览器,然后键入myappname://的URL地址栏和提交,它显示了我UIAlertView,说Open this page in "MyAppName"?与选项Cancel和Open.
如果我点击Open它成功打开我的应用程序,但是我想这样做而不会UIAlertView弹出该消息.
我已经在线进行了一些快速搜索,看起来每当有新的iOS更新出现时,人们都会遇到麻烦,我似乎无法找到最新的解决方案或答案.
我使用iOS 7.1的iPhone 4s,如果有任何不同,我使用的是xcode 5.1.
另外,我一直使用所谓的"沿前后",成功地做同样的事情在App Store提供的应用程序,而不该UIAlertView在Safari的表现,所以这是绝对有可能的.
谢谢您的帮助.
我有一个注册视图控制器,用户需要输入电子邮件地址,用户名和密码.
对于用户名和密码字段,您现在可以使用"user%$&"这样的用户名和"password%^&$"之类的密码进行注册.我不希望人们能够使用这些特殊字符.
我想这样做,以便用户名和密码字段只能用字母数字字符(字母和数字)提交.我找到了一些方法来做到这一点,但它们令人困惑,我需要它专门用于我的代码.
以下是用户输入电子邮件,用户名和密码并按下提交按钮时执行的一些代码:
NSString *user = [_usernameEntry text];
NSString *pass = [_passwordEntry text];
NSString *email = [_emailEntry text];
self.userSubmittedUsername = user;
if ([user length] < 4 || [pass length] < 4) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Invalid Entry" message:@"Username and Password must both be at least 4 characters long." delegate:self cancelButtonTitle:@"Okay" otherButtonTitles:nil];
[alert show];
} else if ([email length] < 8) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Invalid Entry" message:@"Please enter your email address." delegate:self cancelButtonTitle:@"Okay" otherButtonTitles:nil];
[alert …Run Code Online (Sandbox Code Playgroud) 我有一个iOS应用程序,我想通过iTunes Connect和分发给beta测试人员TestFlight.我存档了我的项目,然后验证并将其提交给了App Store.
如果我登录iTunes Connect并点击我的应用程序,我可以清楚地看到我的提交列表Prelease > Builds.我现在已经尝试了4次,所有4个版本目前都已准备就绪并能够邀请测试人员.
我一直在邀请自己,以及另一个经过批准的内部测试人员.每次收到 "You're invited to test.."电子邮件时,我们都会点击电子邮件中"Open in TestFlight"包含的按钮,然后会将您带入TestFlight应用程序.
然后,TestFlight应用程序只显示一条消息:"The app isn't available. Try again."如果我们"Try Again"多次点击按钮,我们仍会得到相同的结果.
我正在使用AVPlayer我的应用中播放视频.视频播放始终完美无缺,但暂停/恢复视频时除外.如果用户按下暂停按钮,然后恢复视频,则有时音频将位于视频之前.
视频将在正确的位置恢复,但音频已提前.这就好像按下暂停时,音频一直在运行.
当他们按下暂停按钮时,我正在做的就是调用pause方法AVPlayer,我也尝试根据文档设置它的rate属性0.0应该是完全相同的东西.
我只注意到我升级后,这种行为iPhone 6来iOS 9.我已经在iPhone 6 Simulator使用上测试了这个iOS 8.4并且我无法重新创建这种行为,但是AVPlayer在真实设备和模拟器上使用时通常存在差异所以我不能说100%确定到现在为止无法重新创建bug上iOS 8也是如此.
如果您查看iOS 9发行说明并搜索" AVFoundation",您会发现有些内容已发生变化:https://developer.apple.com/library/prerelease/ios/releasenotes/General/RN-iOSSDK-9.0/
我认为AVPlayerItem's新属性canUseNetworkResourcesForLiveStreamingWhilePaused是这个问题的根源,但经过测试,无论我是将其设置为YES或者NO,在这两种情况下问题仍然存在.
在这一点上,我不知道为什么会这样,但现在我最好的猜测是这是一个iOS 9错误.
我希望我不是唯一经历过这种情况的人,并且有人已经找到了解决方案,或者可能知道为什么会这样.我愿意尝试和测试任何东西.
谢谢您的帮助.
我的水平UIScrollView宽度960足以容纳3个UIViewController视图.
每个视图都有一个背景颜色.第一个是粉红色,第二个是蓝色,第三个是绿色.
我希望在用户滚动时将可见颜色混合/混合/淡化.
因此,如果您从第1页(粉红色)滚动到第2页(蓝色),当用户完全刷到第2页时,最终会落在最终的蓝色上之前会有某种类型的粉色和蓝色混合/混合/淡入淡出.
我发现了一个关于我正在尝试做什么的问题,我已经实现了答案,可以在这里找到:https://stackoverflow.com/a/26159561/3344977
这个答案确实有效,我唯一的问题是这个答案只是为了使用2个屏幕/颜色,我有3个屏幕/颜色.
我理解这个答案的基础知识,它取决于UIScrollView contentOffset.x来计算当前的颜色,但除此之外,我在数学方面很糟糕,这让我不知道如何修改它以使用第三种颜色.
我正在开始应用程序的设计阶段,这是我构建的第一个应用程序.该应用目前正在使用iOS SDK 7.1,部署目标为7.0
即使经过我迄今为止所做的所有关于stackoverflow和阅读iOS 7设计指南的研究,我仍然无法解决这个问题.
当我转到我的资产目录并单击LaunchImage时,它只有两个插槽.一个用于2x,一个用于R4.但是,我在网上看到的很多截图都有更多的插槽.
如果我单击+符号并选择New Launch Image,那么这个新的LaunchImage有大量的iPhone和iPad插槽,即使是iOS 5,6和7.
我是否认为我只应该使用带有2x和R4插槽的默认LaunchImage,因为我的应用程序具有iOS 7.0的部署目标,iOS 7支持的唯一iPhone型号具有视网膜显示?
编辑:资产目录中的AppIcon是类似的.它只有3个插槽,所有插槽都有2个插槽.
我有一个UICollectionViewCell子类,我需要绕其角并添加阴影.该单元看起来像一张方形卡,单元格之间有足够的空间.
因此,在每个单元格"下面",我想添加一些阴影.我可以成功地做到这一点,但后来我的手机底部只有圆角.顶部只有正常的角落.我需要所有四个角的圆角.
我已经在这里找到了解决方案UIViews,建议添加一个单独UIView的subview,但我更愿意出于性能原因避免这种情况.
我找到了一个使用此方法的解决方案,您可以在我的代码中找到:
[UIBezierPath bezierPathWithRoundedRect: cornerRadius:]
但这对我来说也不起作用.是否有可能它不适合我,因为我试图只在单元格的底部添加阴影"下面"?似乎大多数这些答案都是针对开发人员想要在整个单元格周围添加阴影的问题提供的.
我想我愿意为subview我的UICollectionViewCell子类添加一个特殊的,但我想将它作为最后的手段.
我的目标iOS 7+和使用Xcode 6.1.1.
这是我在UICollectionViewCell子类中使用的代码,用于尝试实现阴影和圆角:
- (void)load:(CustomUserObject *)customObject
{
self.customObject = customObject;
// Round cell corners
self.layer.cornerRadius = 12;
// Add shadow
self.layer.masksToBounds = NO;
self.layer.shadowOpacity = 0.75f;
self.layer.shadowRadius = 10.0f;
self.layer.shouldRasterize = NO;
self.layer.shadowPath = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(self.frame.size.width/2 - (self.frame.size.width - 50)/2, self.frame.size.height, self.frame.size.width - 50, 10) cornerRadius:self.layer.cornerRadius].CGPath;
}
Run Code Online (Sandbox Code Playgroud)
编辑:如果我设置self.layer.masksToBounds到NO,影子工程,但顶角不圆.如果我设置self.layer.masksToBounds …
我有一个UITableViewCell多个子视图.其中一个子视图是a UILabel,单元格的高度是根据文本的大小动态调整的UILabel.这非常有效.
我在单元格中有另一个子视图也有约束.该子视图始终应与单元格具有完全相同的高度.这也非常有效.
但是,在尝试在该子视图上设置遮罩层时遇到问题.遮罩层正常工作,但子视图的高度错误,并且与单元格的高度不同.
这是我的掩码层代码:
UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:self.mySubview.bounds
byRoundingCorners:(UIRectCornerTopLeft | UIRectCornerTopRight | UIRectCornerBottomLeft | UIRectCornerBottomRight)
cornerRadii:CGSizeMake(10, 10)];
CAShapeLayer *maskLayer = [CAShapeLayer layer];
maskLayer.frame = self.mySubview.bounds;
maskLayer.path = maskPath.CGPath;
self.mySubview.layer.mask = maskLayer;
Run Code Online (Sandbox Code Playgroud)
我一直在做研究,并试图找到一种方法来解决这个问题,所以我既可以设置遮罩层,也可以让子视图具有正确的高度但是我无法让它工作.
我已经看过几次推荐这个解决方案了:
[self setNeedLayout];
[self layoutIfNeeded];
// Customize cell after here
Run Code Online (Sandbox Code Playgroud)
但这对我也不起作用.有没有办法让我知道何时应用了自动布局约束,以便我可以在之后应用遮罩层?
掩码层代码非常简单,它使用子视图的边界,并且边界是关闭的,因为它使用了在应用约束之前存在的边界并且子视图具有正确的高度.至少我认为我理解正确.
我像往常一样设置和自定义UINavigationController's导航栏viewWillAppear:.然后我以0.6的间隔进行NSTimer射击viewDidLoad.此计时器触发我的动画代码.
我正在使用Facebook的POP框架,我想要做的就是使用以下代码稍微改变图层的y位置并弹回一点:
// Move object up
POPSpringAnimation *positionAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPLayerPositionY];
positionAnimation.toValue = @(self.myView.frame.origin.y - 5);
positionAnimation.springBounciness = 20;
positionAnimation.velocity = @(2000);
[self.myView.layer pop_addAnimation:positionAnimation1 forKey:@"positionAnimation"];
Run Code Online (Sandbox Code Playgroud)
出于某种原因,这总是会导致视图位于下方UINavigationBar.如果我切换到以下代码,视图将转到正确的位置:
POPSpringAnimation *frameAnimation = [POPSpringAnimation animation];
frameAnimation.property = [POPAnimatableProperty propertyWithName:kPOPViewFrame];
frameAnimation.toValue = [NSValue valueWithCGRect:CGRectMake(12, 24, 91, 116)];
[self.myView.layer pop_addAnimation:secondFrameAnimation forKey:@"frameAnimation"];
Run Code Online (Sandbox Code Playgroud)
问题是,如果我尝试向frameAnimation使用该velocity属性添加任何反弹,应用程序崩溃,我收到以下错误:
'Invalid value', reason: '2000 should be of type CGRect'
Run Code Online (Sandbox Code Playgroud)
如果我将我的positionAnimation代码放入一个不使用UINavigationController导航栏的新项目中,一切正常,视图会动画到正确的y位置.唯一的另一个区别是我当前的项目是从一个nib/xib文件加载这个视图,但一切都是在新的项目中以编程方式完成的.我不确定这与它有什么关系.
那么如何使用带导航栏的导航控制器,还能成功使用位置动画?
编辑:
我现在让动画正常工作,但仍然遇到一些非常奇怪的行为.以下是成功移动视图而不是将其置于以下位置的代码UINavigationBar …
现在我有一个简单的登录视图控制器.它有2个文本字段,一个用于用户名,另一个用于密码.我想为这两个文本字段的键盘添加以下功能:
当用户在用户名文本字段中输入用户名时,他们应该能够按下"下一步"返回键,该键应将其带到第二个文本字段以获取密码.
当用户输入密码并按下键盘的"完成"返回键时,我想执行我已设置的IBAction.
这是我想在用户按下密码文本字段中的"完成"返回键时执行的IBAction代码:
-(IBAction)didTapLoginButton:(id)sender {
[self textFieldShouldReturn:_usernameEntry];
NSString *user = [_usernameEntry text];
NSString *pass = [_passwordEntry text];
if ([user length] < 4 || [pass length] < 4) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Invalid Entry" message:@"Username and Password must both be at least 4 characters long." delegate:self cancelButtonTitle:@"Okay" otherButtonTitles:nil];
[alert show];
} else {
[_activityIndicator startAnimating];
[PFUser logInWithUsernameInBackground:user password:pass block:^(PFUser *user, NSError *error) {
[_activityIndicator stopAnimating];
if (user) {
NSLog(@"Successful login");
//[self performSegueWithIdentifier:@"loginToMainAppSegue" sender:self];
[self performSegueWithIdentifier:@"loginToMediaCaptureVC" sender:self];
} else …Run Code Online (Sandbox Code Playgroud) ios ×11
objective-c ×5
calayer ×2
ios7 ×2
ios7.1 ×2
iphone ×2
uitextfield ×2
xcode5.1 ×2
audiotoolbox ×1
autolayout ×1
avfoundation ×1
avplayer ×1
avplayeritem ×1
cgpath ×1
cgpathref ×1
cocoapods ×1
facebook-pop ×1
git ×1
ibaction ×1
if-statement ×1
ios8 ×1
ios9 ×1
iphone-4 ×1
iphone-5 ×1
phasset ×1
testflight ×1
uikeyboard ×1
uiscrollview ×1
uitableview ×1
xcode6 ×1