在这里使用本教程:http://www.musicalgeometry.com/? p = 1297我使用AVCaptureSession创建了自定义叠加和图像捕获.
我试图让用户在前后摄像头之间切换.这是我在CaptureSessionManager中切换摄像头的代码:
- (void)addVideoInputFrontCamera:(BOOL)front {
NSArray *devices = [AVCaptureDevice devices];
AVCaptureDevice *frontCamera;
AVCaptureDevice *backCamera;
for (AVCaptureDevice *device in devices) {
//NSLog(@"Device name: %@", [device localizedName]);
if ([device hasMediaType:AVMediaTypeVideo]) {
if ([device position] == AVCaptureDevicePositionBack) {
//NSLog(@"Device position : back");
backCamera = device;
}
else {
//NSLog(@"Device position : front");
frontCamera = device;
}
}
}
NSError *error = nil;
if (front) {
AVCaptureDeviceInput *frontFacingCameraDeviceInput = [AVCaptureDeviceInput deviceInputWithDevice:frontCamera error:&error];
if (!error) {
if ([[self captureSession] …Run Code Online (Sandbox Code Playgroud) 如何将超过3位的所有数字转换为4位或更少的数字?
这正是我的意思:
10345 = 10.3k
10012 = 10k
123546 = 123.5k
4384324 = 4.3m
Run Code Online (Sandbox Code Playgroud)
舍入并不完全重要,但还有一个额外的好处.
我已经研究过NSNumberFormatter但是没有找到合适的解决方案,而且我还没有在SO上找到合适的解决方案.非常感谢任何帮助,谢谢!
我有一个将使用Facebook和Instagram API的应用程序,这两个都要求我使用这个委托方法:
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
return [PFFacebookUtils handleOpenURL:url];
}
Run Code Online (Sandbox Code Playgroud)
这是由instagram提供的代码:
-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
return [self.instagram handleOpenURL:url];
}
Run Code Online (Sandbox Code Playgroud)
如您所见,这是一个问题,因为我只能返回一个URL处理程序,但我需要能够决定哪一个.
在我的应用代表中,我已经注释掉上面的Instagram选项,只留下了Facebook.正如预期的那样,Facebook可以正常工作,但是当我在Instagram上点击授权时,我收到了这个错误:

显然,Facebook正试图处理来自Instagram的返回URL,因此它会出错.
检查URL是否包含我正在尝试的每项服务的应用程序ID是否合理?因此,如果URL包含instagram ID,则返回instagram处理程序,如果它包含Facebook ID,则返回Facebook处理程序.
任何帮助都会很棒,谢谢!
所以我遇到了许多其他人在使用UIButton作为自定义视图创建UIBarButtonItem时遇到的相同问题.
基本上,按钮向左或向右约10像素到远.当我使用没有自定义视图的常规BarButtonItem时,这不会发生.
这篇文章提供了部分解决方案: UIBarButton With Custom View
这是我通过子类化UIButton创建的代码(如另一篇文章中所述)
- (UIEdgeInsets)alignmentRectInsets {
UIEdgeInsets insets;
if ([self isLeftButton]) {
insets = UIEdgeInsetsMake(0, 9.0f, 0, 0);
}
else { // IF ITS A RIGHT BUTTON
insets = UIEdgeInsetsMake(0, 0, 0, 9.0f);
}
return insets;
}
- (BOOL)isLeftButton {
return self.frame.origin.x < (self.superview.frame.size.width / 2);
}
Run Code Online (Sandbox Code Playgroud)
这很好用,但当我从导航控制器弹出一个视图控制器回到这个主视图时,按钮仍然错误地定位了大约.3秒,然后它捕捉到正确的插图.
这是一个巨大的眼睛,我不知道如何阻止它像这样攫取.有什么想法吗?谢谢!
这是我的Podfile:
platform :ios, ‘7.0’
pod 'ECSlidingViewController', '~> 2.0.0'
Run Code Online (Sandbox Code Playgroud)
当我在终端中输入pod install时,这是我得到的错误:
[!] Invalid `Podfile` file: /Users/Kyle/Desktop/Testing/Podfile:1: no .<digit> floating literal anymore; put 0 before dot
platform :ios, ‘7.0’
^
/Users/Kyle/Desktop/Testing/Podfile:1: syntax error, unexpected tINTEGER, expecting '('
platform :ios, ‘7.0’
^. Updating CocoaPods might fix the issue.
Run Code Online (Sandbox Code Playgroud)
Podfile中的所有内容都是正确的.我试过"而不是"没有效果.我也删除了小数(点)并移动它.我错过了什么?
在浏览网页后,一位用户建议我的Ruby安装可能出错,但我该如何检查呢?我还验证了我安装了所有Ruby更新:
sudo gem update --system
Run Code Online (Sandbox Code Playgroud)
任何帮助都会很棒,谢谢!
我有一个相对直接的实现使用CALayer对象设置的进度视图.进度视图本身是UIView的子视图.
以下是设置进度环的代码:
self.progressRingLayer = CAShapeLayer()
let innerRect = CGRectInset(bounds, CGFloat(self.lineWidth) / 2, CGFloat(self.lineWidth) / 2)
let innerPath = UIBezierPath(ovalInRect: innerRect)
self.progressRingLayer.path = innerPath.CGPath
self.progressRingLayer.fillColor = UIColor.clearColor().CGColor
self.progressRingLayer.strokeColor = kProgressColor.CGColor
self.progressRingLayer.anchorPoint = CGPointMake(0.5, 0.5)
self.progressRingLayer.transform = CATransform3DRotate(self.progressRingLayer.transform, (CGFloat(M_PI))*1, 0, 0, 1)
self.progressRingLayer.lineCap = kCALineCapRound
self.progressRingLayer.lineWidth = CGFloat(self.lineWidth)
self.layer.addSublayer(self.progressRingLayer)
Run Code Online (Sandbox Code Playgroud)
我现在要做的是向跟随(或弯曲)路径的progressRingLayer添加渐变.我成功地为填充添加了线性渐变,但不仅仅是路径.
这是我想要的效果的一个例子:

到目前为止,我发现的所有内容都需要一些额外的步骤,其中CoreGraphics和CGContext不太适合我的实现.任何帮助都会很棒,谢谢!
我已经在互联网上倾倒了几天,试图弄清楚如何实现这一点.
我需要从twitter请求访问令牌和秘密,以便将其传递给将为我的应用程序处理用户推文的服务器.
我一直关注此链接https://dev.twitter.com/docs/ios/using-reverse-auth
问题是第1步.他们没有给你一个步骤1的例子.
这是我的代码:
NSURL *url = [NSURL URLWithString:TW_OAUTH_URL_REQUEST_TOKEN];
NSDictionary *parameters = @{TW_X_AUTH_MODE_KEY:TW_X_AUTH_MODE_REVERSE_AUTH};
SLRequest *getTwitterAuth = [SLRequest requestForServiceType:SLServiceTypeTwitter requestMethod:SLRequestMethodGET URL:url parameters:parameters];
// Assume that we stored the result of Step 1 into a var 'resultOfStep1'
NSString *S = resultOfStep1;
NSDictionary *step2Params = [[NSMutableDictionary alloc] init];
[step2Params setValue:@"kfLxMJsk7fqIuy8URhleFg" forKey:@"x_reverse_auth_target"];
[step2Params setValue:S forKey:@"x_reverse_auth_parameters"];
NSURL *url2 = [NSURL URLWithString:@"https://api.twitter.com/oauth/access_token"];
SLRequest *stepTwoRequest =
[SLRequest requestForServiceType:SLServiceTypeTwitter requestMethod:SLRequestMethodPOST URL:url2 parameters:step2Params];
// You *MUST* keep the ACAccountStore alive for as long as you need an …Run Code Online (Sandbox Code Playgroud) 我有一个表视图,当用户向下滚动UITableView(向上推拇指)时执行动画,当用户在UITableView上向上滚动(按下拇指向下)时,执行不同的动画.
问题是当用户到达UITableView的底部并且它反弹时,表会记录向上然后向下移动,从而在不应该执行时执行动画.
滚动到顶部时会发生同样的确切行为; 但是,我能够像这样检测它:
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
self.lastContentOffset = scrollView.contentOffset;
}
-(void) scrollViewDidScroll:(UIScrollView *)scrollView {
// Check if we are at the top of the table
// This will stop animation when tableview bounces
if(self.tableView.contentOffset.y < 0){
// Dont animate, top of tableview bounce
} else {
CGPoint currentOffset = scrollView.contentOffset;
if (currentOffset.y > self.lastContentOffset.y) {
// Downward animation
[self animate:@"Down"];
} else {
// Upward
[self animate:@"Up"];
}
self.lastContentOffset = currentOffset;
}
}
Run Code Online (Sandbox Code Playgroud)
这很完美,但对于我的生活,我无法弄清楚是否有条件来检测底部.我确信这很简单,我只是想不通.
我正在寻找一种方法来实现每次单元格通过屏幕上的特定点(中心)时播放的刻度噪声.
我一直在网上倾泻但是无法弄清楚从哪里开始?任何方向都会很棒(不是找人为我解决,只是一些见解或建议)
谢谢!
更新:
这是我使用您的方法实现的代码,但它无法正常工作.似乎永远不会调用"Tick"nslog,这意味着参数中的某些内容不正确.我的tableview单元格高100像素.有什么建议?
- (void) scrollViewDidScroll:(UIScrollView *)scrollView {
}
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
self.myTimer = [NSTimer scheduledTimerWithTimeInterval:1/30.0 target:self selector:@selector(checkTableViewScrollPosition) userInfo:nil repeats:YES];
}
- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView
{
if (self.myTimer)
[self.myTimer invalidate];
self.myTimer = nil;
}
int currentContentOffset = 0;
int tableviewCellHeight = 100;
int thresholdValue = 50;
- (void) checkTableViewScrollPosition {
int contentOffsetValue = _contentTableView.contentOffset.y;
NSLog(@"%d", contentOffsetValue);
if ((contentOffsetValue + tableviewCellHeight / 2) % tableviewCellHeight <= thresholdValue && currentContentOffset != contentOffsetValue ) {
NSLog(@"Tick!");
NSLog(@"%d", contentOffsetValue);
currentContentOffset = _contentTableView.contentOffset.y; …Run Code Online (Sandbox Code Playgroud) 我有一个用Swift编写的应用程序,它从他们的地址簿中提取用户联系人.
我想过滤掉只包含公司名称的联系人(这样你就可以得到"假定的"真人联系而不是商家)
以下是我在app的Objective-C版本中实现的方法:
NSArray *allContacts = (__bridge_transfer NSArray *)ABAddressBookCopyArrayOfAllPeople(addressBook);
NSPredicate *predicate = [NSPredicate predicateWithBlock:^BOOL(id person, NSDictionary *bindings) {
NSString *firstName = CFBridgingRelease(ABRecordCopyValue((__bridge ABRecordRef)person, kABPersonFirstNameProperty));
NSString *lastName = CFBridgingRelease(ABRecordCopyValue((__bridge ABRecordRef)person, kABPersonLastNameProperty));
return (firstName || lastName);
}];
NSArray *peopleNotCompanies = [allContacts filteredArrayUsingPredicate:predicate];
Run Code Online (Sandbox Code Playgroud)
这很好用,所以这是我尝试在Swift中做到这一点:
var contactList: NSArray = ABAddressBookCopyArrayOfAllPeople(addressBook).takeRetainedValue()
var predicate: NSPredicate = NSPredicate { (AnyObject person, NSDictionary bindings) -> Bool in
var firstName: String = ABRecordCopyValue(person as ABRecordRef, kABPersonFirstNameProperty).takeRetainedValue() as String
var lastName: String = ABRecordCopyValue(person as ABRecordRef, kABPersonLastNameProperty).takeRetainedValue() as String
return …Run Code Online (Sandbox Code Playgroud)