javascript

java

python

c#

node.js

android

reactjs

c++

php

jquery

html

css

git

ruby-on-rails

.net

ios

sql

c

string

ruby

ios-如何调整UIImage的大小以减小上传图像的大小

我一直在搜索google,只遇到了降低高度/宽度或某些如何通过CoreImage编辑UIImage外观的库。 但是我还没有看到或找到一个库,这篇文章解释了如何减小图像大小,因此在上载时,它不是完整的图像大小。

到目前为止,我有这个:

        if image != nil {
        //let data = NSData(data: UIImagePNGRepresentation(image))
        let data = UIImagePNGRepresentation(image)
        body.appendString("--\(boundary)\r\n")
        body.appendString("Content-Disposition: form-data; name=\"image\"; filename=\"randomName\"\r\n")
        body.appendString("Content-Type: image/png\r\n\r\n")
        body.appendData(data)
        body.appendString("\r\n")
    }

并且正在发送12MB的照片。 如何将其减小到1mb? 谢谢!

trans by 2019-10-15T15:29:25Z

ios-使用autolayou在UIView子类上正确使用nativeContentSize和sizeThatFits:

我问这个(以某种方式)简单的问题只是为了挑剔,因为有时我担心许多UIView的API可能会被滥用,尤其是在自动布局方面。

为了使它超级简单,我将举一个例子,假设我需要一个具有图像图标和多行标签的UIView子类。 我想要的行为是视图的高度随标签的高度而变化(以适应文本的内部),而且,我正在使用“界面”构建器对其进行布局,因此我具有以下内容:

simple view image

具有一些约束,这些约束赋予图像视图固定的宽度和高度,给标签赋予固定的宽度和位置(相对于图像视图):

simple view image, constraints shown

现在,如果我在标签上设置了一些文本,则希望调整视图的高度以适合其正确大小,或者保持其在xib中的高度不变。在自动布局之前,我总是会做这样的事情:

在CustoView子类文件中,我将像这样覆盖sizeToFit

- (CGSize) sizeThatFits:(CGSize)size{

    //this stands for whichever method I would have used
    //to calculate the height needed to display the text based on the font
    CGSize labelSize = [self.titleLabel intrinsicContentSize];

    //check if we're bigger than what's in ib, otherwise resize
    CGFloat newHeight = (labelSize.height <= 21) ? 51: labelSize.height+20;

    size.height = newHeight;

    return size;

}

而且比起我会这样称呼:

myView.titleLabel.text = @"a big text to display that should be more than a line";
[myView sizeToFit];

现在,考虑约束条件,我知道自动布局系统会在视图树元素上调用sizeToFit以了解其大小并进行计算,因此我应该在子视图中覆盖intrinsicContentSize,以返回之前在sizeThatFits:方法中返回的完全相同的东西。 如图所示,除了以前调用sizeToFit时我的视图已正确调整大小,但现在使用自动布局并结合xib不会发生这种情况。

当然,每次我在子类中编辑文本时,我可能都会调用sizeToFit,而覆盖的needsUpdateConstraints会返回与updateConstraints大小完全相同的大小,但是以某种方式,我认为这不是正确的做法。

我当时正在考虑重写needsUpdateConstraintsupdateConstraints,但仍然没有多大意义,因为我的视图的宽度和高度是从xib的自动调整大小蒙版推断出并转换的。

这么长的时间,您认为什么才是我在此处显示的内容完全支持自动布局的最干净,最正确的方法?

trans by 2019-10-15T14:07:49Z

swift-在iOS 10中请求相机和库的权限-Info.plist

我已经在应用程序中实现了WKWebView。在显示的网页中有一个文件输入,它应该从照片中导入图像。每当我按该输入并选择“拍摄照片”或“照片图库”时,应用程序都会突然崩溃,我认为这是因为该应用程序缺少拍摄照片或从图库中导入的权限。

当用户选择上述方法之一(拍摄照片或照片库)时,如何发送许可请求?

我将Swift 3.0与WKWebView一起使用。

trans by 2019-10-15T11:33:54Z

目标c-如何在iOS中计算SHA-2(最好是SHA 256或SHA 512)哈希?

安全服务API似乎不允许我直接计算哈希。 有很多可用的公共领域版本和自由许可版本,但如果可能的话,我宁愿使用系统库实现。

可通过NSData或普通指针访问数据。

哈希的加密强度对我很重要。 SHA-256是可接受的最小哈希大小。

trans by 2019-10-15T10:59:18Z

ios-如何以编程方式切换UIsegmentedControll?

如何以编程方式切换UISegmentedControll

trans by 2019-10-15T09:33:55Z

iPhone-[UILabel copyWithZone:]:无法识别的选择器已发送到instan

我觉得我的头撞在这里的墙上(坦率地说,我已经准备好这样做了)。

我正在尝试为视图设置背景。 我需要设置的背景是图像,并且我正在使用此代码(在其他两个UIViewController子类中可以很好地工作-这是复制/粘贴到新文件中):

UIImage *img = [gameNode imageFromKey:@"background"];
UIColor *bg = [[UIColor alloc] initWithPatternImage:img];
self.view.backgroundColor = bg;
[bg release];

正如我所说,这在其他两个地方都很好,但是在这里,第self.view.backgroundColor = bg行抛出

'NSInvalidArgumentException', reason: '-[UILabel copyWithZone:]: unrecognized selector sent to instance 0x9259840'

没有更多的事情要做。 我在IB中验证了顶级视图的引用出口已设置为文件的所有者。 我清理了项目并重新启动。 我什至关闭了Xcode并重新启动了它-没运气。 我还想念什么?

编辑:正如我提到的,没有太多的反向堆栈跟踪,只是这样:

2012-05-28 13:13:56.997 OOKL[36012:17303] -[UILabel copyWithZone:]: unrecognized selector sent to instance 0x92b79a0
2012-05-28 13:13:56.997 OOKL[36012:17303] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UILabel copyWithZone:]: unrecognized selector sent to instance 0x92b79a0'
*** First throw call stack:
(0x2933052 0x44c7d0a 0x2934ced 0x2899f00 0x2899ce2 0x2935bd9 0xaa92dd 0x6a4f40 0x6a4eeb 0x6bfd60 0xc0191a 0x2934e1a 0x289e821 0xc0046e 0xaa7e2c 0xaa83a9 0xaa85cb 0xb2b59 0xb1969 0x2934ec9 0x9e55c2 0x9e555a 0xa8ab76 0xa8b03f 0xa8a2fe 0xa0aa30 0xa0ac56 0x9f1384 0x9e4aa9 0x2ac6fa9 0x29071c5 0x286c022 0x286a90a 0x2869db4 0x2869ccb 0x2ac5879 0x2ac593e 0x9e2a9b 0x214d 0x20c5)

没什么-之前或之后。

trans by 2019-10-15T09:29:28Z

uitableview-iOS 8自动单元格高度-无法滚动到las

我正在使用iOS 8新的自动调整大小的单元格。 外观上效果很好-每个单元格都有合适的大小。 但是,如果我尝试滚动到最后一行,则表视图似乎不知道其正确大小。 这是一个错误还是有解决办法?

重新创建问题的方法如下:

使用这个项目-TableViewCellWithAutoLayoutiOS8(从该SO答案引用),我按预期得到了自动调整大小的单元格。

但是,如果我正在调用scrollToRowAtIndexPath函数,如下所示:

tableView.scrollToRowAtIndexPath(NSIndexPath(forRow: model.dataArray.count - 1, inSection: 0), atScrollPosition: .Bottom, animated: true)

我没有到达最后一行-它只会使我绕到一半。

即使尝试使用这样的较低级别的函数:

tableView.setContentOffset(CGPointMake(0, tableView.contentSize.height - tableView.frame.size.height), animated: true)

结果与预期不符,将无法解决。 如果我多次单击它或等待片刻,最终它将到达正确的位置。 似乎tableView.contentSize.height设置不正确,因此iOS“不知道”最后一个单元格在哪里。

将不胜感激。

谢谢

trans by 2019-10-15T06:41:08Z

ios-如何按Swi中的数组元素分组

假设我有以下代码:

class Stat {
   var statEvents : [StatEvents] = []
}

struct StatEvents {
   var name: String
   var date: String
   var hours: Int
}


var currentStat = Stat()

currentStat.statEvents = [
   StatEvents(name: "lunch", date: "01-01-2015", hours: 1),
   StatEvents(name: "dinner", date: "01-01-2015", hours: 1),
   StatEvents(name: "dinner", date: "01-01-2015", hours: 1),
   StatEvents(name: "lunch", date: "01-01-2015", hours: 1),
   StatEvents(name: "dinner", date: "01-01-2015", hours: 1)
]

var filteredArray1 : [StatEvents] = []
var filteredArray2 : [StatEvents] = []

我可以手动调用下一个函数多次,以使2个数组按“相同名称”分组。

filteredArray1 = currentStat.statEvents.filter({$0.name == "dinner"})
filteredArray2 = currentStat.statEvents.filter({$0.name == "lunch"})

问题是我不知道变量值,在这种情况下为“ dinner”和“ lunch”,因此我想按名称自动将此statEvents数组分组,所以我会得到与名称不同时一样多的数组。

我该怎么办?

trans by 2019-10-15T02:31:33Z

uinavigationcontroller-iOS 11 navigationItem.title查看宽度N

在iOS11上看到带有NavigationItem.titleView的行为,其中titleView的宽度不是屏幕的整个宽度。

我有一个自定义视图,我将其设置为titleView。 在iOS11之前,该视图将填充导航栏区域。 但是iOS 11并没有调整大小以填充屏幕宽度。

我试过在设置titleView之前设置视图的框架,但没有运气。 我试图将titleViews超级视图也强制设置为布局约束,但是没有运气。

随附的屏幕截图:

iOS10:

enter image description here

iOS11:

enter image description here

还有其他人遇到吗?

trans by 2019-10-14T18:52:23Z

ios-在代码生成的UIVi上绘制UIBezierPath

我在运行时添加了UIBezierPath代码。

我想在其中绘制UIBezierPath,但这是否意味着我必须为UIView覆盖drawRect

还是在定制的UIBezierPath上有另一种绘制方法呢?

这是生成UIBezierPath的代码:

UIView* shapeView = [[UIView alloc]initWithFrame:CGRectMake(xOrigin,yOrigin+(i*MENU_BLOCK_FRAME_HEIGHT), self.shapeScroll.frame.size.width, MENU_BLOCK_FRAME_HEIGHT)];
shapeView.clipsToBounds = YES;

这是创建和返回UIBezierPath的函数:

- (UIBezierPath*)createPath
{
    UIBezierPath* path = [[UIBezierPath alloc]init];
    [path moveToPoint:CGPointMake(100.0, 50.0)];
    [path addLineToPoint:CGPointMake(200.0,50.0)];
    [path addLineToPoint:CGPointMake(200.0, 200.0)];
    [path addLineToPoint:CGPointMake(100.0, 200.0)];
    [path closePath];
    return path;
}
trans by 2019-10-14T03:45:57Z

ios-将图像添加到uitablevi

我有tableview,如何在此单元格的左侧添加图像?

trans by 2019-10-14T03:41:54Z

ios-NSDateForm中“ YYYY”和“ yyyy”之间的区别

“ YYYY”和“ yyyy”之间的确切区别是什么。 我在此链接中读到,它指出

一个常见的错误是使用YYYY。 yyyy指定日历年   而YYYY指定在ISO中使用的年份(“一周中的年份”)   年周日历。 在大多数情况下,yyyy和YYYY产生相同的结果   数字,但是它们可能不同。 通常,您应该使用   公历年。

但是当我尝试使用

NSString *stringDate = @"Feb 28, 2013 05:30pm";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MMM dd, yyyy hh:mma"];
NSDate *date=[dateFormatter dateFromString:stringDate];
NSLog(@"Date 1 : %@",date); //2013-02-28 12:00:00 +0000

NSString *stringDatee = @"Feb 28, 2013 05:30pm";
NSDateFormatter *dateFormatterr = [[NSDateFormatter alloc] init];
[dateFormatterr setDateFormat:@"MMM dd, YYYY hh:mma"];
NSDate *datee=[dateFormatterr dateFromString:stringDatee];
NSLog(@"Date 2 : %@",datee); //2013-01-05 12:00:00 +0000

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"MMM dd, YYYY hh:mma"];
NSString *dateString = [dateFormat stringFromDate:datee];
NSLog(@"date 3 : %@", dateString); //Jan 05, 2013 05:30PM

这样,我了解到datedatee的结果不同,但是为什么日期2和日期3的结果不同? 当我从字符串创建日期并将日期再次反转为字符串时,但是输出不匹配?

有人知道原因吗? 尽管它指定一年中的星期,但我还是应该得到相同的结果。

谢谢..

编辑:-

如果我编码

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"MMM dd, YYYY hh:mma"];
NSString *dateString = [dateFormatterr stringFromDate:[NSDate date]];
NSLog(@"date: %@", dateString); //Feb 28, 2013 04:37PM

如果结果我是正确的结果,但是我作为字符串传递给日期,直到得到2013-01-05 12:00:00 +0000,检查NSLog的日期2,结果奇怪,为什么?

trans by 2019-10-14T02:24:10Z

ipad-iOS 8中未显示UIImagePickerController

还有其他人在iOS 8中遇到UIImagePickerController的问题吗? 下面的方法在iPad上的iOS 7中可以很好地工作,但是当我尝试展示选择器(最后一行)时,当我在XCode 6(Beta 3或4)中运行此错误时,出现以下错误。 如果重要的话,sourceType的选择来自在同一位置显示的alertView。

Warning: Attempt to present <UIImagePickerController: 0x7c0ae400>  on <CAGUCreateContactViewController: 0x7bf61a00> which is already presenting (null)

打开imagePicker的方法。

- (void)openPhotoPicker:(UIImagePickerControllerSourceType)sourceType
{
    if ([UIImagePickerController isSourceTypeAvailable:sourceType]) {
        NSArray *availableMediaTypes = [UIImagePickerController availableMediaTypesForSourceType:sourceType];
        if ([availableMediaTypes containsObject:(NSString *)kUTTypeImage]) {
            UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init];
            imagePickerController.modalPresentationStyle = UIModalPresentationFullScreen;
            imagePickerController.sourceType = sourceType;
            imagePickerController.mediaTypes = @[(NSString *)kUTTypeImage];
            imagePickerController.delegate = self;

            self.imagePickerController = imagePickerController;

            if (sourceType == UIImagePickerControllerSourceTypeCamera) {
                [self presentViewController:self.imagePickerController animated:YES completion:nil];
            } else {                    
                if (self.popoverVC) {
                    [self.popoverVC dismissPopoverAnimated:YES];
                    self.popoverVC = nil;
                }

                self.popoverVC = [[UIPopoverController alloc] initWithContentViewController:imagePickerController];
                [self.popoverVC presentPopoverFromRect:self.nameAndPicCell.picture.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
            }
        }
    }
}
trans by 2019-10-14T01:50:41Z

ios-在主线程上发布NSNotification

我发现了以下代码段,该代码段允许NSNotification从任何后台线程发布到主线程上。 我想知道这是否是一种安全且可以接受的做法?

dispatch_async(dispatch_get_main_queue(),^{
    [[NSNotificationCenter defaultCenter] postNotificationName:@"ImageRetrieved" 
                                                        object:nil 
                                                      userInfo:imageDict];
});
trans by 2019-10-13T23:32:16Z

移动浏览器-iOS Web应用程序(尤其是iPad)具有多个“苹果触摸启动图像”分辨率吗?

我已经编写了一个基于HTML5的iOS Web应用程序,并且看起来一切正常,但是我试图通过多个启动屏幕来完善它。 iPhone / iPod touch在PNG为320x460的情况下效果很好,如下所示:

<link rel="apple-touch-startup-image" href="img/startup_screen-320x460.png" />

我发现大量文档说,iPad的启动图像(如iPhone / iPod touch)应从高度上刮掉20px,以容纳状态栏,分辨率为768x1004(纵向)或1024x748(横向)。 但是,在我的测试中(当前使用的是运行iOS 3.2.2的iPad),只有768x1004(纵向)分辨率有效(但在横向模式下,分辨率不正确-20px太窄)。

我尝试了以下操作(基于link链接的功能进行的疯狂猜测),无济于事:

<link rel="apple-touch-startup-image" href="img/startup_screen-320x460.png" />
<link rel="apple-touch-startup-image" sizes="1024x748" href="img/startup_screen-1024x748.png" />
<link rel="apple-touch-startup-image" sizes="768x1004" href="img/startup_screen-768x1004.png" />

如果它是列出的最后link元素,则只有768x1004分辨率的图像有效。 如果最后一个分辨率为1024x748的图像,则以灰色背景代替(而不是768x1004)。 因此,很明显apple-touch-startup-image link不支持sizes属性。

较新版本的iOS是否支持此功能? 有什么方法可以支持多个启动映像? 我应该创建一个1024x768启动映像吗? 如果是这样,iPhone / iPod touch是否会按比例缩小? 或者,我应该放弃iPad而没有启动映像吗?

trans by 2019-10-13T12:14:04Z

ios-在Swift中从哪里删除NSNotification的观察者?

由于viewDidUnloaddealloc()不可用,我应该在哪里删除Swift中NSNotification的观察者?

trans by 2019-10-13T10:06:48Z

iPhone-如何使用iOS上的本机Twitter应用程序打开Twitter推文?

Safari可以使用以下格式的链接打开一条推文:

http://twitter.com/1Direction_X/statuses/197752514391715842

在iOS 5上,Twitter是内置的。 如何使用从我的应用程序调用的本机Twitter应用程序打开上述推文?

trans by 2019-10-13T09:59:01Z

目标c-iOS 7中的UITextView链接检测

我有UITextView,它是通过Interface Builder管理的。 作为数据检测,我检查了“链接”。 在iOS 6中,一切正常,链接突出显示并且可以单击。 不过,在iOS 7中,所有链接都只是纯文本。 未选中可编辑和可选复选框。

可能值得关注的是UITextView是容器视图的子视图,该视图又位于UIScrollView内部。

trans by 2019-10-12T22:25:42Z

ios-在无效的牌局中对特征结果设置通知

我想使用CoreBluetooth将数据从iPhone发送到Mac。 为此,我编写了类似iPhone的代码“ Peripheral”和Mac的代码“ Central”。

它可以完美工作,但有时它会直接断开连接,然后连续不断地连接和断开连接。

有时,当它尝试重新连接时,在Central中,它直接调用“ didDisconnectPeripheral”委托方法。 但是有时在'didUpdateNotificationStateForCharacteristic'中会出现错误“句柄无效”。

我引用了net中的所有链接。 但是我无法解决这个问题。 我以为在iPhone中它正在存储蓝牙缓存。

请提出解决方案,如何解决“手柄无效”错误?

以下是一些重要方法。

对于Peripheral,我编写了如下代码。

在Appdelegate中:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.peripheral = [[PeripheralServerObject alloc] init];
self.peripheral.serviceUUID = [CBUUID UUIDWithString:@"4w24"];
return YES;
}

在外围对象文件中:

//To Check Bluetooth State
- (void)peripheralManagerDidUpdateState:(CBPeripheralManager *)peripheral {
    switch (peripheral.state) {
        case CBPeripheralManagerStatePoweredOn:
            [self enableService];
            break;
        case CBPeripheralManagerStatePoweredOff: {
            [self disableService];
            break;
        }
}

// To Add characteristics to Service
- (void)enableService
{
[self.peripheral removeAllServices];
 self.service = [[CBMutableService alloc]
                    initWithType:self.serviceUUID primary:YES];

self.authChar =
        [[CBMutableCharacteristic alloc] initWithType:[CBUUID UUIDWithString:@"a86e"]
                                           properties:CBCharacteristicPropertyNotify
                                                value:nil
                                          permissions:CBAttributePermissionsReadable];


self.respChar =
        [[CBMutableCharacteristic alloc] initWithType:[CBUUID UUIDWithString:@"a86f"]
                                           properties:CBCharacteristicPropertyWriteWithoutResponse
                                                value:nil
                                          permissions:CBAttributePermissionsWriteable];

self.service.characteristics = @[ self.authChar, self.respChar ];

    // Add the service to the peripheral manager.
    [self.peripheral addService:self.service];
}

//Peripheral Manager delegate method will be called after adding service.

- (void)peripheralManager:(CBPeripheralManager *)peripheral
            didAddService:(CBService *)service
                    error:(NSError *)error {

    [self startAdvertising];

}

//To disable service 
- (void)disableService
{
 [self.peripheral stopAdvertising];
 [self.peripheral removeAllServices];
}

//To enable a service again.
-(void)refreshService {
    [self disableService];
    [self enableService];
}


If central subscribes the characteristic, then the below peripheral delegate method will be called. In this I implemented code to send data

- (void)peripheralManager:(CBPeripheralManager *)peripheral
                  central:(CBCentral *)central
didSubscribeToCharacteristic:(CBCharacteristic *)characteristic {

    self.dataTimer = [NSTimer scheduledTimerWithTimeInterval:10.0
                                                      target:self
                                                    selector:@selector(sendData)
                                                    userInfo:nil
                                                     repeats:YES];
}

- (void)sendData
{
Here I am sending data like [Apple's BTLE Example Code][1]  
}


//If unsubscribed then I am invalidating timer and refreshing service

- (void)peripheralManager:(CBPeripheralManager *)peripheral
                  central:(CBCentral *)central
didUnsubscribeFromCharacteristic:(CBCharacteristic *)characteristic {

    if (self.dataTimer)
        [self.dataTimer invalidate];
    [self refreshService];

}

对于Mac,我编写了外围代理方法。

//I enables the notification for "a860" Characteristic.

- (void)peripheral:(CBPeripheral *)peripheral
didDiscoverCharacteristicsForService:(CBService *)service
error:(NSError *)error {

     CBUUID * authUUID = [CBUUID UUIDWithString:@"a86e"];
       for (CBCharacteristic *characteristic in service.characteristics) {

        if ([characteristic.UUID isEqual:authUUID]) {
         }
        [self.connectedPeripheral setNotifyValue:YES
                                   forCharacteristic:characteristic];
         }
}

-(void)peripheral:(CBPeripheral *)peripheral didUpdateNotificationStateForCharacteristic:(CBCharacteristic *)characteristic error:(NSError *)error {
   if (error) {
   Here I am getting error sometimes "The handle is invalid".
    }
}
trans by 2019-10-12T20:25:20Z

ios-如何限制UITextField在Swift中只能取数字?

我希望用户仅在UITextField中输入数字值。在iPhone上,我们可以显示数字键盘,但在iPad上,用户可以切换到任何键盘。

有什么方法可以限制用户在UITextField中仅输入数字值?

trans by 2019-10-12T17:28:01Z

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 下一页 共89页