我正在UITableViewCell使用Storyboard中的原型单元配置自定义.但是,所有UILabels(和其他UI元素)似乎都没有添加到单元格中contentView,而是UITableViewCell直接添加到视图中.当单元格进入编辑模式时,这会产生问题,因为内容不会自动移位/缩进(如果它们位于内部,它会执行此操作contentView).
有没有办法contentView在使用Interface Builder/Storyboard/prototype cell布局单元格时添加UI元素?我找到的唯一方法是在代码中创建所有内容并使用[cell.contentView addSubView:labelOne]不太好的内容,因为以图形方式布置单元格要容易得多.
我可以使用以下内容在我的应用内成功发起电话:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://123456789"]];
Run Code Online (Sandbox Code Playgroud)
但是,一旦电话通话终止,是否可以自动返回应用程序?这似乎在iPhone OS 3.0下是不可能的,但我希望现在可以在iOS 4.2下进行多任务处理(我无法找到有关iOS 4.2特定问题的任何信息).
在此先感谢您的帮助!
我在使用标准代码的-drawRect:方法中画了一个圆圈.但是,我想略微脉冲(变大和变小)并用动画改变颜色填充的强度.例如,如果圆圈充满了红色,我想用脉冲圆圈,并使脉冲动作使红色稍微更轻,更暗.没有太多的核心动画经验我对如何做到这一点有点迷茫,所以任何帮助将不胜感激.UIViewCGContextFillEllipseInRect()
这是一个非常简单的概念,但到目前为止,我一直无法找到一个优雅的(和日历区域独立)解决方案.我需要找到一个任意的月份的第一天NSDate.例如,给定一个任意NSDate(arbitraryDate)将返回另一个NSDate对象(让我们调用它firstDayOfMonthDate),它代表该月的第一天arbitraryDate.时间组件并不重要,因为我只需要在该月的第一天使用NSDate对象(尽管为了整洁,如果时间刚刚归零,它将是有用的).
在此先感谢您的任何帮助.
假设我有一个如下所示的项目:

有两个UIViews - 一个叫yellowBox,另一个叫redBox.自动布局约束规定yellowBox从超视图顶部开始有60个点,有350个前导和尾随空格(即视图的左侧和右侧).在redBox具有相同的前端和后端空间的限制.两个0之间有一个垂直空间约束,表示底部yellowBox应始终直接位于顶部redBox.
当用户点击"扩展黄色框"按钮时,我希望yellowBox增加的高度,结果redBox向下移动以继续满足垂直空间约束(yellowBox始终位于顶部redBox).这是动画代码:
- (IBAction)expandYellowBox:(id)sender {
[UIView animateWithDuration:0.5
animations:^{
CGRect newFrame = self.yellowBox.frame;
newFrame.size.height += 50;
self.yellowBox.frame = newFrame;
}];
}
Run Code Online (Sandbox Code Playgroud)
但是,我一直无法正常工作.正如您在红色图标中看到的那样,目前的约束存在问题:

这是公平的,因为自动布局无法知道盒子的高度.但是,我不知道如何以这样的方式解决这个问题,它将允许调整框的大小和移动.例如,如果我在yellowBoxthen 上指定一个高度约束,则会阻止它的大小调整.如果我将高度约束设置为大于或等于(以允许yellowBox高度增加),那么我得到一个不同的约束错误:
所有约束都是在故事板中使用Xcode建立的 - 没有一个是用代码编写的.
任何帮助非常感谢.
编辑:事实证明,yellowBox当点击按钮时,它正在增长 - 这只是我无法分辨,因为它出现在后面redBox.我只是在四次点击后才注意到它开始出现在底部redBox.然而,同样的问题仍然存在 - 如何让redBox总是坚持下去yellowBox.
我有一个基于iOS 5 ARC的项目,并且在我应该删除观察者的位置时遇到困难,NSNotificationCenter因为我已经注册了UIViewController.关于SO的类似帖子已经说过这应该在-dealloc方法中完成.尽管ARC项目中不需要此方法,但我已使用以下代码添加它:
- (void)dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
Run Code Online (Sandbox Code Playgroud)
作为测试,我打开UIViewController(在a内UINavigationController),做一些触发通知的事情,然后通过点击Back按钮将其弹出堆栈.然后UIViewController,我重新打开,并做更多事情来触发通知,但请注意每个回调被调用两次 - 表明以前的通知尚未注销.重复此过程只会导致每次回调被调用多次,因此它们似乎永远不会取消注册.
任何帮助,将不胜感激!
cocoa-touch objective-c nsnotifications nsnotificationcenter ios
我在UIView中使用以下NSNotifications,以便在出现UIKeyboard时通知视图并在屏幕上调整其位置(框架):
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidShow:) name:UIKeyboardDidShowNotification object:nil];
Run Code Online (Sandbox Code Playgroud)
上面的两个通知正在-initUIView 的方法中订阅.一旦视图在屏幕外消失,取消订阅这些通知的最佳位置在哪里?目前,只要UIKeyboard出现在另一个视图中,应用程序就会崩溃,大概是因为仍然会向当时发布的UIView发送通知.
此外,除了-init方法之外,还有更好的地方订阅通知吗?
谢谢你的帮助.
我有一个UILabel lineBreakMode设置为UILineBreakModeWordWrap.这工作正常,除非我有一块没有空格的长文本.在这种情况下,它不会包裹文本的长平板,而是在它到达UILabel框架的右端时切断它.我怎么能告诉的UILabel,它应该包裹在这种情况下一个字符边界上只(实质上相当于UILineBreakModeCharacterWrap设置,但仅限于spaceless文本的那些漫长的砖).
提前致谢!
我试图countForFetchRequest在Swift 2.0中的托管对象上下文中使用该方法.
我注意到错误处理executeFetchRequest已更改为新do-try-catch语法:
func executeFetchRequest(_ request: NSFetchRequest) throws -> [AnyObject]
Run Code Online (Sandbox Code Playgroud)
但该countForFetchRequest方法仍然使用遗留错误指针:
func countForFetchRequest(_ request: NSFetchRequest,
error error: NSErrorPointer) -> Int
Run Code Online (Sandbox Code Playgroud)
...我在使用Swift 2.0时如何使用它时遇到了一些麻烦.
如果我做与Swift 2.0之前相同的事情:
let error: NSError? = nil
let count = managedObjectContext.countForFetchRequest(fetchRequest, error: &error)
Run Code Online (Sandbox Code Playgroud)
我收到错误说删除&,但如果我删除,我得到另一个错误,说NSError不能转换为NSErrorPointer.
任何帮助将不胜感激如何使这项工作.
我有 UITableView使用自定义UITableViewCell的.单元格可以具有三种类型的背景图像之一(在每个单元格的.backgroundView.image属性中设置):顶部,中间或底部.顶部和底部图像用于第一个和最后一个单元格,并且具有圆角(很像分组UITableView的单元格).其中的所有其他"中间"单元UITableView具有矩形中间背景图像.
我的问题是,在UITableView" 编辑"模式下重新排序单元格时,单元格不会根据新位置刷新不同的背景图像.例如,如果我将第一个单元格移动到表格的中间,它仍然保留其原始的"顶部"背景图像(带有圆角),并且出现在表格视图顶部的新单元格仍然具有其原始"中间"背景图片,这看起来有点奇怪.
我可以通过reloadData在表视图上执行此操作来解决这个问题,但这样做的问题是不能给出更改的优美动画.我注意到,当UITableView移动/拖动单元格时重新排序标准时,相关单元格上的背景图像会发生变化(甚至在移动的单元格被放入新位置之前),这看起来非常好.我想实现同样的目标.
为此,我实现了tableView:targetIndexPathForMoveFromRowAtIndexPath:toProposedIndexPath每次在表视图中拖动行时调用的内容.在此我尝试了各种设置方法,backgroundView.image包括直接设置图像,然后明确告诉它使用重绘单元格和/或图像setNeedsLayout,setNeedsDisplay但似乎没有任何东西让细胞重绘.我已经NSLog'ged这些更改的结果,它们似乎正在提交到单元格,因为正确的值出现在NSLog,但单元格似乎没有在屏幕上更新.
如果有人能指出我做错了什么,或建议一个更好的方法来实现工作结果,我将非常感激.谢谢!
编辑:以下代码从赏金中提取并格式化,以便更容易消化:
UIImage *rowBackground;
UIImage *selectionBackground;
NSInteger sectionRows = [_tableView numberOfRowsInSection:[indexPath section]];
NSInteger row = [indexPath row];
if (row == 0 && row == sectionRows - 1)
{
rowBackground = [UIImage imageNamed:@"field_title_bkg.png"];
selectionBackground = [UIImage imageNamed:@"field_title_bkg.png"];
}
else if (row == 0)
{
rowBackground = [UIImage …Run Code Online (Sandbox Code Playgroud) ios ×7
cocoa-touch ×6
iphone ×4
objective-c ×3
uitableview ×2
autolayout ×1
core-data ×1
ios5 ×1
ios6 ×1
nscalendar ×1
nsdate ×1
swift ×1
swift2 ×1
uikit ×1
uilabel ×1
uiview ×1