我正在开发一个应用程序,我在纵向模式下捕获图像,然后移动到另一个带有图像数据的类,并在UIScrollView上的UIImageView中显示该图像.
现在,如果我正在使用图像表单库,它工作正常,但如果我必须捕获图像,它将以横向模式显示数据.下面是我的两个类的代码.:
第1类:
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
NSData *imgData = UIImagePNGRepresentation([info objectForKey:@"UIImagePickerControllerOriginalImage"]);
[picker dismissModalViewControllerAnimated:YES];
image = [[UIImage alloc] initWithData:imgData];
CGImageRef imgRefCrop = image.CGImage;
UIImage *photo = [UIImage imageWithCGImage:imgRefCrop];
PhotoCropperPage *photoCropper = [[PhotoCropperPage alloc]
initWithPhoto:photo
delegate:self
uiMode:PCPUIModePresentedAsModalViewController
showsInfoButton:YES];
[photoCropper setMinZoomScale:0.3f];
[photoCropper setMaxZoomScale:4.0f];
[self.navigationController pushViewController:photoCropper animated:YES];
}
Run Code Online (Sandbox Code Playgroud)
第2类:
- (void) loadPhoto
{
if (self.photo == nil) {
return;
}
CGFloat w = self.photo.size.width;
CGFloat h = self.photo.size.height;
CGRect imageViewFrame = CGRectMake(0.0f, 0.0f, roundf(w / 2.0f), roundf(h / 2.0f));
self.scrollView.contentSize = …Run Code Online (Sandbox Code Playgroud) 我希望用户从他的图书馆中选择一个视频并将其限制为45秒(如WhatsApp - 您可以编辑视频,将发送的视频不超过45秒.
但是,如果我使用下面的代码,无论持续时间如何,它都会选择一个视频,我无法修剪它(用视频测试,长度为1分钟)
UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init];
imagePickerController.delegate = self;
imagePickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
imagePickerController.videoQuality = UIImagePickerControllerQualityTypeLow;
imagePickerController.videoMaximumDuration = 45.0f; //?
imagePickerController.mediaTypes = [UIImagePickerController availableMediaTypesForSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
[[self parentViewController] presentModalViewController:imagePickerController animated:YES];
[imagePickerController release];
Run Code Online (Sandbox Code Playgroud)
在WhatsApp中,我得到以下屏幕,我想重现:

我正在开发中,我使用的是一个应用程序UINavigationController的AppDelegate.在发布时,我用一个初始化它UIViewController.
self.navigationController = [[UINavigationController alloc] initWithRootViewController:viewController];
[self.navigationController setNavigationBarHidden:YES];
[window addSubview:self.navigationController.view]; like this.
Run Code Online (Sandbox Code Playgroud)
不过,我想其他补充UIViewControllers到UINavigatioNController,但我知道,这不是很好的做法,重新初始化UINavigationController每次我想用其他的UIViewControllers.请你能告诉我正常的做法吗?
我希望在我的UIViewController中有一个透明的背景,因为我使用了clearColor
colorPickerVc.view.backgroundColor = UIColor.clearColor()
presentViewController(colorPickerVc, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud)
问题是当colorPickerVc完成加载时,背景颜色变黑了我想要一个解决方案,如果可能的话,在ios 7上工作,谢谢你的帮助
@ good4pc的解决方案:
colorPickerVc.view.backgroundColor = UIColor.clearColor()
if #available(iOS 8.0, *)
{
colorPickerVc.modalPresentationStyle = UIModal PresentationStyle.OverCurrentContext
}
else
{
colorPickerVc.modalPresentationStyle = UIModalPresentationStyle.CurrentContext
}
presentViewController(colorPickerVc, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud)
为我工作,谢谢你们的帮助
我正在尝试构建一个应用程序,让用户从iPad上的库中选择和上传视频.我需要最大视频长度为30秒.
我使用以下代码:
UIImagePickerController *mediaPicker = [[UIImagePickerController alloc] init];
mediaPicker.mediaTypes = [NSArray arrayWithObjects:(NSString *)kUTTypeMovie,(NSString *)kUTTypeImage,nil];
mediaPicker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
mediaPicker.videoQuality = UIImagePickerControllerQualityTypeIFrame960x540;
mediaPicker.videoMaximumDuration = 30.0f;
mediaPicker.delegate = self;
if (self.imagePickerPopOverController.popoverVisible) {
[self.imagePickerPopOverController dismissPopoverAnimated:YES];
}
self.imagePickerPopOverController = [[UIPopoverController alloc] initWithContentViewController:mediaPicker];
[self.imagePickerPopOverController presentPopoverFromBarButtonItem:self.navigationItem.rightBarButtonItem
permittedArrowDirections:UIPopoverArrowDirectionUp
animated:NO];
Run Code Online (Sandbox Code Playgroud)
选择视频后,我希望UIImagePickerController显示一个修剪器,将视频长度调整为30秒(如果更长),但事实并非如此.
如何使用 Swift 将 UITextField 限制为一位小数?文本字段用于输入价格,因此我不能允许超过一位小数。如果我使用 Objective-C,我会使用以下代码:
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string];
NSArray *sep = [newString componentsSeparatedByString:@"."];
if([sep count] >= 2)
{
NSString *sepStr=[NSString stringWithFormat:@"%@",[sep objectAtIndex:1]];
return !([sepStr length]>1);
}
return YES;
}
Run Code Online (Sandbox Code Playgroud)
但由于 Swift 使用范围的方式不同,我无法将此代码转换为 Swift。第一行给了我一个错误说NSRange is not convertible to Range<String.Index>
编辑:在看到答案之前我最终这样做了:
func textField(textField: UITextField!, shouldChangeCharactersInRange range: NSRange, replacementString string: String!) -> Bool {
let tempRange = textField.text.rangeOfString(".", options: NSStringCompareOptions.LiteralSearch, range: nil, locale: nil)
if tempRange?.isEmpty == false && string == …Run Code Online (Sandbox Code Playgroud) 我有一个UITableView,它填充了一个'Product'类型的对象数组,每个对象都有一个string类型的'name'属性.单击单元格时,将显示模态视图,其中包含有关该产品的更多信息.
我想要做的是根据名称属性的第一个字母将产品分成几个部分.(喜欢iPhone联系人).
我一直在努力解决这个问题,我似乎无法在网上找到解决我特定问题的任何内容.
有人能指出我正确的方向吗?
如何检查UITableViewCell是否在屏幕上完全可见(不是通过选项卡或导航栏切断)?
我可以使用以下代码获取可见单元格:
NSArray *indexes = [_tableView indexPathsForVisibleRows];
Run Code Online (Sandbox Code Playgroud)
但我想排除屏幕中不完全可见的单元格.
我正在使用Storyboard与autolayout. 在我的中,ViewController我有一个基本结构:一个UIScrollView和一个包含不同标签的 contentView ( UIView)。然后我在viewDidAppearmy 类的方法中添加了不同的元素contentView,然后为了重新计算它的帧大小,我这样做:
- (void)fixContentViewHeight
{
_contentView.frame = CGRectMake(_contentView.frame.origin.x, _contentView.frame.origin.y, _contentView.frame.size.width, operators.frame.origin.y + operators.frame.size.height);
//constraint for contentView height
_contentViewHeight.constant = operators.frame.origin.y + operators.frame.size.height;
}
- (void)fixScrollViewHeight
{
_scrollView.frame = _contentView.frame;
_scrollView.contentSize = _contentView.frame.size;
}
Run Code Online (Sandbox Code Playgroud)
其中operators是 最后放置的元素contentView,它始终位于框架的底部。我在 中调用这两个方法,viewDidAppear它们使视图可滚动,问题是 的框架contentView没有更新,因此最后一个元素始终不可单击(因为它们放置在视图框架之外)。
我究竟做错了什么?为什么scrollView变得可滚动但contentView保持旧框架?
由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“无法解析格式字符串“12+6+ == 1””
我想验证表达式是否有效。我正在尝试使用以下代码:
let equationString = "12+6+"
do {
let expr = try NSExpression(format: equationString)
if let result = expr.expressionValue(with: nil, context: nil) as? NSNumber {
let x = result.doubleValue
print(x)
} else {
print("failed")
}
}
catch {
print("failed")
}
Run Code Online (Sandbox Code Playgroud)
我已经使用了 try-catch 语句,但仍然在这里崩溃。有什么解决办法吗?
任何帮助,将不胜感激。
objective-c ×9
ios ×8
iphone ×2
swift ×2
uitableview ×2
ipad ×1
math ×1
nsexpression ×1
sorting ×1
swift4 ×1
try-catch ×1
uiimageview ×1
uitextfield ×1
uiview ×1
video ×1
viewport ×1
xcode ×1