经常被问到,从来没有回答过(至少不是以可重复的方式).
我有一个图像视图,其图像小于视图.我想将图像缩放到屏幕的宽度,并调整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)
同样的效果,没有好处.我换centerInside了fitCenter.同样的效果,没有好处.我换centerInside了centerCrop.
android:scaleType="centerCrop"
Run Code Online (Sandbox Code Playgroud)
现在,最后,图像缩放到屏幕的宽度 - 但在顶部和底部裁剪!所以我改变了centerCrop对fitXY.
android:scaleType="fitXY"
Run Code Online (Sandbox Code Playgroud)
现在,图像缩放到屏幕的宽度,但没有在y轴上缩放,导致图像失真.
删除android:adjustViewBounds="true"无效.android:layout_gravity如其他地方所建议的,添加一个也没有效果.
我尝试过其他组合 - 无济于事.所以,请有人知道:
如何设置ImageView的XML来填充屏幕的宽度,缩放较小的图像以填充整个视图,显示具有宽高比的图像而不会失真或裁剪?
编辑:我也尝试设置任意数字高度.这仅对centerCrop设置有影响.它会根据视图高度垂直扭曲图像.
我遇到了一个非常令人费解的错误.我的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
所以,它终于发生了.发生了任何独立iPhone开发人员的最糟糕情况.升级我的应用程序后,有几个用户报告完全数据丢失.iCloud核心数据同步无法正常工作.我的用户正在部分使用此应用来运行他们的业务.这是一场真正的灾难性失败.
我改变的唯一与iCloud相关的事情是将键值存储添加到iCloud.核心数据代码保持完全相同,模型版本相同(无迁移)等.
在我的测试中,一切都很美妙!但令我沮丧的是,用户报告说,当他们打开更新的应用程序时,他们的数据不再存在.
这可能是什么原因?
请在下面找到我的托管对象模型和持久性存储的代码.如果您还需要其他任何东西来评估问题,请告诉我.
- (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) 我必须创建一个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) 对我正在开发的应用程序进行一些基本改进.iOS快速开发领域仍然是新手.我想我的代码中的文本行会自动居中,因为我将标签设置为居中.经过一番研究后,我发现事实并非如此.我如何将这样的代码对齐到中心:
let atrString = try NSAttributedString(
data: assetDetails!.cardDescription.dataUsingEncoding(NSUTF8StringEncoding)!,
options: [NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType],
documentAttributes: nil)
assetDescription.attributedText = atrString
Run Code Online (Sandbox Code Playgroud) 我有一个应用程序有两个托管对象上下文设置如下:
当将新的托管对象插入主上下文时,我保存主上下文,然后保存父上下文,如下所示:
[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.
所以:
[NSManagedObjectContext obtainPermanentIDsForObjects:error:],然后对应用程序进行后台处理,重新激活它,重新加载,使用主要上下文获取对象objectWithID:,并访问属性,我得到
"CoreData无法解决......".
用故事板,静态细胞,cellForRowAtIndexPath:行
UITableViewCell *cell =
[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
Run Code Online (Sandbox Code Playgroud)
总是回来nil.
我检查了以下内容:
我的视图控制器UITableViewController当然是包含在故事板中的临时导航控制器中的子类.怀疑我的视图控制器以某种方式不知道故事板中定义的单元标识符,因为它可能是另一个实例,这里是代码"实例化"它.在prepareForSegue:,我用
CustomViewController *vc = [[[segue destinationViewController]
viewControllers] objectAtIndex:0];
Run Code Online (Sandbox Code Playgroud)
这里完成的视图控制器的其他自定义(设置属性等)工作正常.
我使用静态单元格,因为节和行的数量不会改变,每个单元格包含静态文本(以及其他控件或要编辑的文本字段).
在我看来,这是一个非常常见的任务(在视图控制器的数据源方法中自定义故事板中的静态单元格).我究竟做错了什么?
我有一个MainViewController,它有一个按钮,通过翻转horizontailly推动一个新的视图(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
我有一个奇怪的问题,我无法弄清楚我错过了什么.我有一个可编辑的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) 我有一个查询,我想用当前日期时间更新列.我想要更新的列是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) ios ×6
objective-c ×4
iphone ×3
uitableview ×3
core-data ×2
swift ×2
android ×1
cocoa-touch ×1
concurrency ×1
datetime ×1
drawrect ×1
icloud ×1
imageview ×1
ios5 ×1
ios6 ×1
mysql ×1
nested ×1
nsindexpath ×1
php ×1
storyboard ×1
uilabel ×1
uiview ×1