小编Mun*_*ndi的帖子

Android ImageView缩小图像到宽度,灵活高度,无裁剪或失真

经常被问到,从来没有回答过(至少不是以可重复的方式).

我有一个图像视图,其图像小于视图.我想将图像缩放到屏幕的宽度,并调整ImageView的高度以反映图像的比例正确高度.

<ImageView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
/>
Run Code Online (Sandbox Code Playgroud)

这导致图像以其原始尺寸(小于屏幕宽度)为中心,边缘为边缘.不好.

所以我补充道

android:adjustViewBounds="true" 
Run Code Online (Sandbox Code Playgroud)

同样的效果,没有好处.我补充道

android:scaleType="centerInside"
Run Code Online (Sandbox Code Playgroud)

同样的效果,没有好处.我换centerInsidefitCenter.同样的效果,没有好处.我换centerInsidecenterCrop.

android:scaleType="centerCrop"
Run Code Online (Sandbox Code Playgroud)

现在,最后,图像缩放到屏幕的宽度 - 但在顶部和底部裁剪!所以我改变了centerCropfitXY.

android:scaleType="fitXY"
Run Code Online (Sandbox Code Playgroud)

现在,图像缩放到屏幕的宽度,但没有在y轴上缩放,导致图像失真.

删除android:adjustViewBounds="true"无效.android:layout_gravity如其他地方所建议的,添加一个也没有效果.

我尝试过其他组合 - 无济于事.所以,请有人知道:

如何设置ImageView的XML来填充屏幕的宽度,缩放较小的图像以填充整个视图,显示具有宽高比的图像而不会失真或裁剪?

编辑:我也尝试设置任意数字高度.这仅对centerCrop设置有影响.它会根据视图高度垂直扭曲图像.

android imageview image-scaling

77
推荐指数
5
解决办法
8万
查看次数

didSelectRowAtIndexPath返回错误的IndexPath

我遇到了一个非常令人费解的错误.我的UITableView 的第一行返回1,第二行在indexPath中返回0!这怎么可能呢?

在我的` - (void)viewDidLoad`中,一切都还可以.我正在成功突出第一行

currentRow = 0;
[tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:currentRow inSection:0] 
  animated:NO scrollPosition:UITableViewScrollPositionNone];
Run Code Online (Sandbox Code Playgroud)

我有currentRow用于跟踪选择哪一行的变量(另一个控件根据当前选择的一个而变化).

现在在我的`didDeselectRowAtIndexPath`委托函数中,我有:

-(void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath {
...
NSLog(@"IndexPath: %@", [indexPath description]);
}
Run Code Online (Sandbox Code Playgroud)

日志显示以下内容:

IndexPath: <NSIndexPath 0x79509d0> 2 indexes [0, 0]当我触摸第二行时,以及 IndexPath: <NSIndexPath 0x79509d0> 2 indexes [0, 1]当我触摸第一行时.

没有行插入或删除或排序等,甚至没有滚动.它是一个简单的UITableView,分组样式,有1个部分和3行.可能是什么导致了这个?

谢谢你的帮助,
S

iphone objective-c uitableview didselectrowatindexpath nsindexpath

70
推荐指数
1
解决办法
1万
查看次数

更多iCloud核心数据同步问题

所以,它终于发生了.发生了任何独立iPhone开发人员的最糟糕情况.升级我的应用程序后,有几个用户报告完全数据丢失.iCloud核心数据同步无法正常工作.我的用户正在部分使用此应用来运行他们的业务.这是一场真正的灾难性失败.

我改变的唯一与iCloud相关的事情是将键值存储添加到iCloud.核心数据代码保持完全相同,模型版本相同(无迁移)等.

在我的测试中,一切都很美妙!但令我沮丧的是,用户报告说,当他们打开更新的应用程序时,他们的数据不再存在.

这可能是什么原因?

  • 持久性存储URL(无处不URL)不应该改变.
  • 合并冲突也不太可能,因为这个问题应该在更新之前出现.
  • 对新的无处不在的键值存储有些干扰吗?
    (我几乎已经排除了这一点.)

请在下面找到我的托管对象模型和持久性存储的代码.如果您还需要其他任何东西来评估问题,请告诉我.

- (NSManagedObjectContext *)managedObjectContext {

    if (managedObjectContext_ != nil) {
        return managedObjectContext_;
    }

    NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
    if (coordinator != nil) {
        managedObjectContext_ = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];
        [managedObjectContext_ performBlockAndWait:^{
            [managedObjectContext_ setPersistentStoreCoordinator:coordinator];
            if (useICloud) {
                [managedObjectContext_ setMergePolicy:NSMergeByPropertyObjectTrumpMergePolicy];
                [[NSNotificationCenter defaultCenter] addObserver:self
           selector:@selector(mergeiCloud:)
           name:NSPersistentStoreDidImportUbiquitousContentChangesNotification
           object:coordinator];
            }
        }];
    }
    return managedObjectContext_;
}
Run Code Online (Sandbox Code Playgroud)

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator {
    if (persistentStoreCoordinator_ != nil) {
        return persistentStoreCoordinator_;
    }

    NSMutableDictionary …
Run Code Online (Sandbox Code Playgroud)

iphone synchronization core-data ios icloud

59
推荐指数
1
解决办法
2871
查看次数

UIView有阴影,圆角和自定义drawRect

我必须创建一个UIView具有圆角,边框,阴影的自定义,并drawRect()重写其方法以提供自定义绘图代码,在该代码中将几条直线绘制到视图中(我需要使用快速,轻量级的方法,因为许多可以呈现这些视图).

我目前面临的问题是,一旦我drawRect()在视图类中重写(即使其中没​​有任何自定义代码),阴影也不再适用于圆角.请参阅附图中的差异:

在此输入图像描述

在视图控制器中我使用以下代码:

    view.layer.cornerRadius = 10;
    view.layer.masksToBounds = true;

    view.layer.borderColor = UIColor.grayColor().CGColor;
    view.layer.borderWidth = 0.5;

    view.layer.contentsScale = UIScreen.mainScreen().scale;
    view.layer.shadowColor = UIColor.blackColor().CGColor;
    view.layer.shadowOffset = CGSizeZero;
    view.layer.shadowRadius = 5.0;
    view.layer.shadowOpacity = 0.5;
    view.layer.masksToBounds = false;
    view.clipsToBounds = false;
Run Code Online (Sandbox Code Playgroud)

在被覆盖的drawContext()我会使用类似的东西:

    var context:CGContext = UIGraphicsGetCurrentContext();
    CGContextSetStrokeColorWithColor(context, UIColor.redColor().CGColor);
    // Draw them with a 2.0 stroke width so they are a bit more visible.
    CGContextSetLineWidth(context, 2.0);
    CGContextMoveToPoint(context, 0.0, 0.0); //start at this point
    CGContextAddLineToPoint(context, 20.0, 20.0); //draw to …
Run Code Online (Sandbox Code Playgroud)

objective-c uiview drawrect ios swift

50
推荐指数
5
解决办法
9万
查看次数

使用NSAttributedString将文本居中在UILabel中

对我正在开发的应用程序进行一些基本改进.iOS快速开发领域仍然是新手.我想我的代码中的文本行会自动居中,因为我将标签设置为居中.经过一番研究后,我发现事实并非如此.我如何将这样的代码对齐到中心:

let atrString = try NSAttributedString(
   data: assetDetails!.cardDescription.dataUsingEncoding(NSUTF8StringEncoding)!, 
   options: [NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType], 
   documentAttributes: nil)
assetDescription.attributedText = atrString
Run Code Online (Sandbox Code Playgroud)

nsattributedstring uilabel ios swift

30
推荐指数
2
解决办法
3万
查看次数

核心数据:子上下文是否为新插入的对象获取永久的objectID?

我有一个应用程序有两个托管对象上下文设置如下:

  • 父上下文:NSPrivateQueueConcurrencyType,链接到持久性存储.
  • 主要上下文:NSMainQueueConcurrencyType,父上下文的子项.

当将新的托管对象插入主上下文时,我保存主上下文,然后保存父上下文,如下所示:

[context performBlockAndWait:^{
    NSError * error = nil;
    if (![context save: &error]) {
        NSLog(@"Core Data save error %@, %@", error, [error userInfo]);
    }
}];

[parentContext performBlock:^{
    NSError *error = nil;
    BOOL result = [parentContext save: &error];
    if ( ! result ) {
        NSLog( @"Core Data save error in parent context %@, %@", error, [error userInfo] );
    }
}];
Run Code Online (Sandbox Code Playgroud)

我的理解是,当首次创建管理对象时,它具有临时性objectID.然后保存主上下文,并且此对象及其临时ID将转到父上下文.然后保存父上下文.保存最后一个上下文后,objectID父上下文中的临时变换为永久变形objectID.

所以:

  • 永久对象ID是否会自动传播回主(子)上下文?
  • 当我强制获取对象永久ID时 [NSManagedObjectContext obtainPermanentIDsForObjects:error:],然后对应用程序进行后台处理,重新激活它,重新加载,使用主要上下文获取对象objectWithID:,并访问属性,我得到

    "CoreData无法解决......".

这种方法有什么问题?

concurrency nested core-data nsmanagedobjectcontext ios

29
推荐指数
2
解决办法
5766
查看次数

故事板静态单元格:dequeueReusableCellWithIdentifier返回nil

用故事板,静态细胞,cellForRowAtIndexPath:

UITableViewCell *cell = 
   [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
Run Code Online (Sandbox Code Playgroud)

总是回来nil.

我检查了以下内容:

  • 在IB/Storyboard中正确设置了单元的标识符,并在代码中使用相同的标识符.我多次验证了这一点.
  • 我没有在其他地方实例化视图控制器(这是此stackoverflow问题中的问题).

我的视图控制器UITableViewController当然是包含在故事板中的临时导航控制器中的子类.怀疑我的视图控制器以某种方式不知道故事板中定义的单元标识符,因为它可能是另一个实例,这里是代码"实例化"它.在prepareForSegue:,我用

CustomViewController *vc = [[[segue destinationViewController] 
   viewControllers] objectAtIndex:0];
Run Code Online (Sandbox Code Playgroud)

这里完成的视图控制器的其他自定义(设置属性等)工作正常.

我使用静态单元格,因为节和行的数量不会改变,每个单元格包含静态文本(以及其他控件或要编辑的文本字段).

在我看来,这是一个非常常见的任务(在视图控制器的数据源方法中自定义故事板中的静态单元格).我究竟做错了什么?

iphone storyboard uitableview ios ios5

21
推荐指数
1
解决办法
2万
查看次数

iOS 6轮换问题 - 从提供的模态视图控制器无法轮换

我有一个MainViewController,它有一个按钮,通过翻转horizo​​ntailly推动一个新的视图(InfoViewController).像这样:

controller.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:controller animated:YES];
Run Code Online (Sandbox Code Playgroud)

MainView控制器支持Portrait和PortraitUpsideDown.像这样:

- (BOOL)shouldAutorotate {
    return YES;    
}

- (NSUInteger)supportedInterfaceOrientations {    
    return (UIInterfaceOrientationMaskPortrait | 
            UIInterfaceOrientationMaskPortraitUpsideDown);
}
Run Code Online (Sandbox Code Playgroud)

在我的InfoViewController中,它还说明了上面的代码.在我的AppDelegate中,它在LaunchOptions中有这个:

[self.window setRootViewController:self.mainViewController];
Run Code Online (Sandbox Code Playgroud)

在我的app.plist文件中,它支持所有方向.这是因为其他观点也需要支持景观.所以在我的MainViewController和InfoViewController上我只需要Portrait和PortraitUpsideDown.但另一种观点我需要所有的观点.

我的MainViewController工作正常,但我的InfoViewController适用于所有方向.

我正在努力让这个在iOS6中运行起来.我已经研究了其他帖子,并尝试过其他人提供的帮助,但没有任何运气.请有人帮助我实现这一点谢谢.我是Objective-C的新手:p

objective-c ios ios6

16
推荐指数
1
解决办法
2万
查看次数

即使显示抓取器,也无法在UITableView中移动行

我有一个奇怪的问题,我无法弄清楚我错过了什么.我有一个可编辑的UITableView(即当我的UI加载时,我发送我的表setEditing:YES animated:YES消息).表中的最后一行是"添加新"行.除了表格中最后一行之外的所有行都可以移动.没有行可以删除.

行显示正确,并且抓取器显示在除最后一行(按预期)之外的所有行的右侧.问题是我无法移动行.当我点击抓取器移动行时,它有点摇晃,但我无法向上或向下拖动它.这是相关的代码片段:

- (UITableViewCellEditingStyle)tableView:(UITableView *)aTableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
    return UITableViewCellEditingStyleNone;
}

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {   
    if (indexPath.row == [self.itemArray count] ) {
        return NO;
    }
    return YES;
}

- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath {
    if (indexPath.row == [self.itemArray count]) {
        return NO;
    }
    return YES;
}

- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath {
    Item *item = [self.itemArray objectAtIndex:fromIndexPath.row];
    [self.itemArray removeObjectAtIndex:fromIndexPath.row];
    [self.itemArray insertObject:item atIndex:toIndexPath.row];
}

- (NSIndexPath *)tableView:(UITableView *)tableView targetIndexPathForMoveFromRowAtIndexPath:(NSIndexPath *)sourceIndexPath toProposedIndexPath:(NSIndexPath *)proposedDestinationIndexPath {
    if …
Run Code Online (Sandbox Code Playgroud)

cocoa-touch objective-c uitableview

13
推荐指数
2
解决办法
6977
查看次数

Mysql/Php - 当前日期和时间

我有一个查询,我想用当前日期时间更新列.我想要更新的列是datetime类型.

我怎样才能得到它并设置它?

else{ //If the last update is NULL, It must be players first page load. So set datetime equal to NOW
    $query = "UPDATE `stats` SET `last_ap_update` =    WHERE `member_id` = {$_SESSION['SESS_MEMBER_ID']}"; 
    $queryresult = mysql_query($insertqry);
}
Run Code Online (Sandbox Code Playgroud)

php mysql datetime

12
推荐指数
2
解决办法
3万
查看次数