我有一个UITableViewCell固定在底部的描述标签,如下所示:

点击描述标签可在和numberOfLines之间切换:30
- (void)awakeFromNib {
[super awakeFromNib];
[self setupView];
}
-(void) setupView
{
UITapGestureRecognizer * gestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(toggleNumberOfLines)];
self.jobDescriptionLabel.userInteractionEnabled = YES;
[self.jobDescriptionLabel addGestureRecognizer:gestureRecognizer];
}
- (void) toggleNumberOfLines {
if(self.jobDescriptionLabel.numberOfLines != 0){
self.jobDescriptionLabel.numberOfLines = 0;
}else{
self.jobDescriptionLabel.numberOfLines = kNumberOfLines;
}
[self.jobDescriptionLabel sizeToFit];
[self layoutIfNeeded];
}
Run Code Online (Sandbox Code Playgroud)
当我点击标签时,行数确实发生了变化,但单元格不会扩展以容纳新的行数。我该如何解决?
折叠(默认):
扩展:
uitableview ios ios-autolayout uitableviewautomaticdimension
当我添加 rightAnchor 约束时,constant= 20 不适用。在leftAnchor就可以了
override init(frame: CGRect) {
super.init(frame: frame)
addSubview(collectionView)
collectionView.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([collectionView.leftAnchor.constraint(equalTo: leftAnchor, constant: 20),
collectionView.topAnchor.constraint(equalTo: self.topAnchor),
collectionView.rightAnchor.constraint(equalTo: rightAnchor, constant: 20),
collectionView.heightAnchor.constraint(equalTo: self.heightAnchor)])
}
Run Code Online (Sandbox Code Playgroud)
有人能帮我吗?
我使用这个代码:
func show(){
view.translatesAutoresizingMaskIntoConstraints = false
view.leftAnchor.constraint(equalTo: view.leftAnchor, constant: 0).isActive = true
view.topAnchor.constraint(equalTo: view.topAnchor, constant: 0).isActive = true
view.heightAnchor.constraint(equalToConstant: view.frame.height - 300).isActive = true
view.rightAnchor.constraint(equalTo: view.rightAnchor, constant: 0).isActive = true
}
func hide(){
view.translatesAutoresizingMaskIntoConstraints = false
view.leftAnchor.constraint(equalTo: view.leftAnchor, constant: 0).isActive = true
view.topAnchor.constraint(equalTo: view.topAnchor, constant: 0).isActive = true
view.heightAnchor.constraint(equalToConstant: view.frame.height + 300).isActive = true
view.rightAnchor.constraint(equalTo: view.rightAnchor, constant: 0).isActive = true
}
Run Code Online (Sandbox Code Playgroud)
showfunction 工作正常,但hidefunction 不起作用并且heightAnchor不起作用。
我正在尝试为 iPhone X 屏幕优化应用程序。目前,它在大多数屏幕上显示黑条或白条。作为示例,我将使用PaymentMethodsView.
这PaymentMethodsView是一个UIView包含 1 或 2 个水平按钮的自定义StackView,superView 具有灰色背景。这StackView当前被限制为 16px 到超级视图(所有 4 个边)。目前它在 iPhone X 上看起来是这样的(在普通 iPhone 上,视图只是在屏幕底部:
我想在这里实现的是,灰色区域延伸到屏幕底部,而黄色区域现在位于整个视图的底部。(所以低 16px)
我可以通过使得到这个工作,Use Safe Area Layout Guide这个ViewController,制约了PaymentMethodsView中到的viewController0 to safe area在侧面,并0 to superview在底部。然后在它PaymentMethodsView本身中,我将所有StackView的约束更改为safe area而不是superview,并将底部约束更改为 0 而不是 16。这很好用,除了在普通 iPhone 上,底部 16px(在 StackView 下)消失并放置黄色按钮到屏幕底部。
我将如何解决这个问题?
bottom safe area我有一个视图,在视图的顶部我已经放置了图像视图,如果帖子有"图像",它显示图像,但如果帖子没有图像,那么它不能.
现在我想设置如果没有图像,则位于图像视图底部的Label位于视图的顶部.所以,它看起来很完美.
这是场景,请调查一下.
> Image View | Label | Label | Label | Label | and so on...
Run Code Online (Sandbox Code Playgroud)
现在,如果没有图像,那么我的视图就是
> | Label | Label | Label | Label | and so on...
Run Code Online (Sandbox Code Playgroud)
但是,我想使用Autolayout删除这个额外的空间,所以,我的视图看起来像这样
> | Label | Label | Label | Label | and so on...
Run Code Online (Sandbox Code Playgroud)
如何使用Autolayout进行设置.
请帮我.
我已经以UITableViewCell编程方式完成了它并且在iOS 10中工作得很好.但是在使用iOS 11和XCode 9进行更新之后,它的行为有所不同.布局看起来如下所示.
但是,如果我点击单元格然后重新排列并且看起来很好,如下所示.
这里是代码 UITableViewCell
import UIKit
import SnapKit
class AboutCell: UITableViewCell {
let roleLabel : UILabel = {
var tablelabel = UILabel()
tablelabel.font = UIFont (name: "Avenir Next Medium", size: 22)
tablelabel.textAlignment = .center
tablelabel.clipsToBounds = true
tablelabel.translatesAutoresizingMaskIntoConstraints = false
return tablelabel
}()
let nameLabel : UILabel = {
let tablelabel = UILabel()
tablelabel.font = UIFont (name: "Avenir Next Medium", size: 16)
tablelabel.textAlignment = .center
tablelabel.clipsToBounds = true
tablelabel.translatesAutoresizingMaskIntoConstraints = false
return tablelabel
}()
let …Run Code Online (Sandbox Code Playgroud) 我的数据源数组中有一些虚拟对象.
我不想在屏幕上显示它们.我也无法从数据源数组中删除它们.
我正在使用适当的约束来获得动态单元格高度.
有没有办法我可以使用这些虚拟对象显示0高度的单元格AutoLayout?
我想在Swift中使用"自动布局可视化格式"在同一位置放置两个视图,我该如何以优雅的方式做到这一点?
我成功使用了NSLayoutConstraint,但我希望我仍然可以使用可视化格式找到一种优雅的方式.
我的代码使用NSLayoutConstraint:
NSLayoutConstraint(item: greenView, attribute: .Left, relatedBy: .Equal, toItem: redView, attribute: .Left, multiplier: 1.0, constant: 0).active = true
NSLayoutConstraint(item: greenView, attribute: .Top, relatedBy: .Equal, toItem: redView, attribute: .Top, multiplier: 1.0, constant: 0).active = true
NSLayoutConstraint(item: greenView, attribute: .Right, relatedBy: .Equal, toItem: redView, attribute: .Right, multiplier: 1.0, constant: 0).active = true
NSLayoutConstraint(item: greenView, attribute: .Bottom, relatedBy: .Equal, toItem: redView, attribute: .Bottom, multiplier: 1.0, constant: 0).active = true
Run Code Online (Sandbox Code Playgroud) 我想使用自动布局来布局我的标签。在iPad 10.5中可以正常工作。但是,当我转移到具有更大屏幕的任何其他版本的iPad时,这种设计就会失效。任何人,请帮助我解决此问题。
ios ×7
swift ×6
uitableview ×3
constraints ×2
autolayout ×1
autoresize ×1
sdk ×1
uitableviewautomaticdimension ×1
xcode ×1