小编Sha*_*oop的帖子

如何使用AutoLayout以编程方式创建自定义UITableViewCell

我正在尝试实现一个UITableView,其行为与twitter客户端的时间轴类似.现在我只是想在UITableViewCell中获得两个标签.根据Stack Overflow的回答,我为每个布局使用了不同的reuseIdentifier.我的布局很简单,由单个标签或两个标签组成.最终我将调整UITableViewCells的高度,但首先我需要填充内容的单元格.

如果我设置框架initWithFrame:,我可以显示标签,但是约束没有实现.

  • 问题:什么阻止标签和约束出现?我在UITableViewCell的实现中显然遗漏了一些东西,但我不知道它是什么.

  • 次要问题:我是否为每个reuseIdentifier正确注册了UITableViewCell类viewDidLoad

这可能会遇到困难,但Interface Builder会让我感到困惑,我想在代码中实现这一点.

以下是名为TVTCell.h的自定义UITableViewCell的代码:

static NSString * const kCellIDTitle = @"CellWithTitle";
static NSString * const kCellIDTitleMain = @"CellWithTitleMain";

@interface TVTCell : UITableViewCell
{
    NSString *reuseID;
}

@property (nonatomic, strong) UILabel *nameLabel;
@property (nonatomic, strong) UILabel *mainLabel;

@end
Run Code Online (Sandbox Code Playgroud)

和TVTCell.m:

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
        reuseID = reuseIdentifier;

        nameLabel = [[UILabel alloc] init];
        [nameLabel setTextColor:[UIColor blackColor]];
        [nameLabel setBackgroundColor:[UIColor colorWithHue:32 saturation:100 brightness:63 alpha:1]];
        [nameLabel setFont:[UIFont …
Run Code Online (Sandbox Code Playgroud)

constraints objective-c uitableview ios autolayout

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

当WKWebView尝试呈现WKActionSheet时,长按会导致错误/警告

我的视图层次结构如下所示:

  • (root)PRSBaseViewController - 一个UIViewController子类 - 具有子viewControllers
    • (已提交)PRSModalWebViewController - 一个UINavigationController子类
      • (推,动画:不)PRSWebViewController - 一个UIViewController子类--WKWebView是一个子视图.

当我尝试长按WebView中的链接时,我收到错误:

Warning: Attempt to present <WKActionSheet: 0x127520d10> on <PRSBaseViewController: 0x1275117f0> whose view is not in the window hierarchy!

presentViewController:animated:completion不是使用addChildViewController:舞蹈来呈现导航,而是使用舞蹈将视图控制器添加到层次结构中.我没有错,这很奇怪.

有谁知道什么可能导致视图层次结构问题?

更新:我已经完成了所有课程要点

objective-c ios presentviewcontroller wkwebview

8
推荐指数
1
解决办法
2171
查看次数

在某些情况下,NSTextStorage子类无法处理表情符号字符和更改字体

我继承NSTextStorage做一些链接高亮和我多读我可以对 话题.一切正常,直到我输入 emoji character.

My subclass:

private let ims = NSMutableAttributedString()

override var string: String {
    return ims.string
}

override func attributesAtIndex(location: Int, effectiveRange range: NSRangePointer) -> [String : AnyObject] {
    return ims.attributesAtIndex(location, effectiveRange: range)
}

override func replaceCharactersInRange(range: NSRange, withString str: String) {
    ims.replaceCharactersInRange(range, withString: str)
    self.edited(.EditedCharacters, range: range, changeInLength:(str as NSString).length - range.length)
}

override func setAttributes(attrs: [String : AnyObject]?, range: NSRange) {
    ims.setAttributes(attrs, range: range)
    self.edited(.EditedAttributes, range: range, changeInLength: 0)
}
Run Code Online (Sandbox Code Playgroud)

Nothing complicated. …

objective-c ios nstextstorage nsmutableattributedstring swift

8
推荐指数
1
解决办法
747
查看次数

如何修复奇怪的NSLayoutConstraint错误,这些错误似乎不会影响自定义UITableViewCell中的布局

每次我的一个自定义UITableViewCells由tableView绘制时:cellForRowAtIndexPath:控制台吐出一堆NSLayoutConstraint不一致.我理解其中大部分内容:

 Unable to simultaneously satisfy constraints. ...boring stuff..

 "<NSLayoutConstraint:0x8b0eb60 V:|-(NSSpace(20))-[UILabel:0x8b0cb30]   (Names: '|':UITableViewCellContentView:0x8bd7d40 )>",
"<NSLayoutConstraint:0x8b0db70 V:[UILabel:0x8b0cb30]-(NSSpace(8))-[UITextView:0x91dba00]>",
"<NSLayoutConstraint:0x8b0dba0 V:[UITextView:0x91dba00]-(NSSpace(20))-|   (Names: '|':UITableViewCellContentView:0x8bd7d40 )>",
"<NSLayoutConstraint:0x8b0d5a0 V:[UITextView:0x91dba00(1000)]>",
"<NSAutoresizingMaskLayoutConstraint:0x8b00330 h=--& v=--& V:[UITableViewCellContentView:0x8bd7d40(44)]>"
)

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x8b0db70 V:[UILabel:0x8b0cb30]-(NSSpace(8))-[UITextView:0x91dba00]>
Run Code Online (Sandbox Code Playgroud)

或者至少我认为我做到了.让我感到困惑的是我的UITableViewCell正在工作,似乎没有任何约束被打破.我认为错误中列出的一些约束,特别是最后一个约束,是系统添加的约束.如果我不使用.xibs并且只在代码中添加了约束,这可能吗?错误的最后一行特别突出,因为我动态生成每个代码的高度,但我注意到那里的44,默认的单元格高度.

是否默认添加了一些约束,例如我打电话时[super updateConstraints]?我将如何解决这些错误或找出它们的来源?

另外,我知道浸入Core Text比我的UITextView + Auto Layout解决方案要好得多.现在我正在努力缓存单元格高度.但是,这些布局错误是否会导致滚动时滞后,或者仅仅因为我使用自动布局来计算屏幕上显示的每个单元格高度?

我发布了在Github上发生这些错误的项目,如果有人想下载并体验自己的怪异.

iphone uitableview ios autolayout nslayoutconstraint

6
推荐指数
1
解决办法
2353
查看次数

我可以使用Xcode 8.3.2将用Swift 4编写的代码提交到App Store吗?

我想使用Xcode 9 beta进行开发,但我似乎无法在Xcode 9中使用Swift 3.2获得正确的设置.编辑器比Xcode 8.3.2快得多

我可以(和有)下载从swift.org夫特4工具链,并且可以从两个Xcode的8.3和Xcode的9测试中使用它.如果我想在Xcode 9正式发布之前发布我的应用程序,我可以在Swift 4中编写它,然后使用Swift 4工具链通过Xcode 8.3将其提交到App Store吗?

xcode app-store ios swift swift4

4
推荐指数
1
解决办法
1228
查看次数

如何从自定义UIGestureRecognizer触发NavigationController的interactivePopGestureRecognizer

iOS 7有一个很棒的交互式动画,用于弹出UIViewControllers.通过从屏幕左侧滑动触发转换,但我想通过在视图控制器中的任意位置滑动来触发转换.(我也想从边缘取消那些,所以我可以将它们用于另一个自定义转换...).

到目前为止,在我的视图控制器中我添加了这个init.我知道这是错的,我不确定我在做什么.

UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handleGesture:)];
panRecognizer.delegate = self.navigationController.interactivePopGestureRecognizer.delegate;
[self.view addGestureRecognizer:panRecognizer];
Run Code Online (Sandbox Code Playgroud)

如何将其与内置的interactivePopGestureRecognizer绑定?应该用我的handleGesture:方法吗?

编辑:Apple的文档中,实际使用了tie这个词:

interactivePopGestureRecognizer

导航控制器在其视图上安装此手势识别器,并使用它将最顶层的视图控制器弹出导航堆栈.您可以使用此属性检索手势识别器,并将其与用户界面中其他手势识别器的行为联系起来.将手势识别器绑在一起时,请确保他们同时识别手势,以确保您的手势识别器有机会处理事件.

你如何与UIGestureRecognizers结合在一起?

uinavigationcontroller uigesturerecognizer ios ios7

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