我在tableview单元格中显示图像(图像名称保存在plist中).在将其设置为单元格之前,我正在调整图像大小
imageSize = CGSizeMake(32, 32);
但是,在调整图像大小后,视网膜显示质量也会降低.

我将两个图像添加到项目中(即1x和@ 2x).
这就是我将图像大小减小到32x32的方法.
+ (UIImage *)scale:(UIImage *)image toSize:(CGSize)size
{
UIGraphicsBeginImageContext(size);
[image drawInRect:CGRectMake(0, 0, size.width, size.height)];
UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return scaledImage;
}
Run Code Online (Sandbox Code Playgroud)
关于此的任何指示非常感谢.
谢谢
设备旋转后,如何让我的细胞重绘?
当我在iPhone上测试时,默认方向是纵向,所以我的动态单元格与设备纵向时需要的高度相同:这意味着当我旋转到横向时,会有很多空白区域.细胞.当我在iPad上测试时,情况正好相反.旋转到纵向时,我的部分文字会被切断,因为默认为横向.我为这两个设备分别设置了故事板,两个视图控制器都设置为"Orientation:Inferred"
(肖像)
(景观)
这就是iPhone上发生的事情 - 拉伸标签有深红色背景,因此您可以看到标签的实际尺寸.但是,单元格高度不会重新计算,并且由于底部标签被约束到单元格的底部,因此它们本身一直位于底部.如果我从拉伸标签(具有背景的标签)添加约束到单元格的底部,它所做的只是拉伸标签,如下所示:
(标签被拉伸)
这告诉我的是,现在我只是无法让单元格知道方向是什么,并且一旦它变得合适就重绘.这是我的heightForRowAtIndexPath代码计算单元格的高度:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (!self.opCell)
{
self.opCell = [self.container dequeueReusableCellWithIdentifier:@"OPCell"];
}
self.opCell.opName.text = [[self.data objectAtIndex:indexPath.row] valueForKey:@"name"];
[self.opCell layoutIfNeeded];
CGFloat height = [self.opCell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height;
return height + 1;
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,得到它的旋转我都试过[self.container reloadData],其中容器是我TableView与willRotateToInterfaceOrientation和didRotateToInterfaceOrientation无济于事.我也尝试将它放在viewDidLoad中,以便在景观模式下以正确的高度加载视图时检测并加载,但这也不起作用.对于iPhone,无论我做什么,它都会加载纵向视图的高度,并且不会在旋转时更新.
我发现了一些我认为可能会有帮助的问题,但我似乎无法让这个答案适合我,即使它看起来像我有同样的问题,而且这个问题似乎更多地关注单元格宽度而不是高度和我不确定它是否适用于同样的方式.
这是一个教程,当我在iPhone上运行它时,也没有在旋转时调整TableViewCells的大小.
本教程似乎对更改表高度有一些了解,因此我将begin/endUpdates代码添加到我的中didRotateToInterfaceOrientation,认为这可能会导致更改,但这不起作用.
所以,如果有人有任何建议或知道解决方案,我将非常感激,因为我正在用这个打砖墙!
objective-c tableviewcell ios heightforrowatindexpath autolayout
在iphone 6中,我正在制作一个自定义的UITableViewCell.在init函数中,当我这样做时,
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
Run Code Online (Sandbox Code Playgroud)
然后,我检查它出来的框架320 X 44而不是375 X 44.但是,layoutSubviews它很好.我在iphone 6模拟器上检查这个.有没有办法只能在init中获得正确的大小?
我有一个带有自定义Cell的表视图,它从数组中获取内容,这一切都很好.我想在每个自定义表视图单元格中添加不同数量的缩略图图像的集合视图.
我已将集合添加到故事板中的自定义单元格.我已经将Collection链接到Custom Cell.m(不确定它应该去那里).我创建了一个Collection Custom Cell并将图像链接到了.
从这里我不确定,是否应该将构建集合视图的方法放在自定义表Cell.m或View Controller.m中?我有一个故事板的图像,你可以看到自定义表格单元格,然后(不太清楚)底部是一个集合视图(水平滚动),我想填充图像 - 只是不知道如何?我也不确定哪些信息可能会有所帮助,所以如果有信息丢失,我很抱歉.

我想知道怎样loadNibNamed的NSBundle类作品; 在某些文件中我发现了类似的东西
[[NSBundle mainBundle] loadNibNamed:@"mynib" owner:self options:NULL];
Run Code Online (Sandbox Code Playgroud)
没有回报价值; 只是在方法内部调用(例如,cellForRowAtIndexPath如果我想自定义我的单元格).在其他文件中我发现:
NSArray* vett=[[NSBundle mainBundle] loadNibNamed:@"mynib" owner:self options:NULL];
Run Code Online (Sandbox Code Playgroud)
在这种情况下,例如cellForRowAtIndexPath,我可以
return [vett lastObject];
Run Code Online (Sandbox Code Playgroud)
或类似的东西.后一种方法在我看来很清楚; 我在一个向量中加载笔尖然后我使用向量元素.问题是要了解第一个究竟是做什么的:
[[NSBundle mainBundle] loadNibNamed:@"mynib" owner:self options:NULL];
Run Code Online (Sandbox Code Playgroud)
没有返回值,没有单元格引用...我的笔尖的对象在哪里?他们是如何处理的?我不明白它是如何工作的
我有一个小应用程序跟踪玩家在体育游戏中的上场时间.我有一个体育游戏列表,你可以点击一个并开始跟踪游戏细节.我正在尝试这样做,以便如果游戏正在进行并且用户返回到游戏列表,则他们无法点击另一个游戏单元,因为它会覆盖活动游戏中的所有当前数据.
我几乎完成了这项工作.当游戏正在进行中并且我返回到体育游戏列表时,只有活动游戏可以访问并向用户显示它是活动的.但是当我回去重置那个游戏时,我希望体育游戏的tableView都可以访问.但他们不是.它仍然只显示一个活动游戏,所有其他游戏都无法访问.我在viewWillAppear中使用tableView.reloadData.我也在下面展示了相关代码.
// gameViewController -> shows all the games you can track
override func viewWillAppear(_ animated: Bool) {
self.tableView.reloadData()
for game in fetchedResultsController.fetchedObjects! {
print("Game Opposition is \(game.opposition)")
print("Is Playing? \(game.isPlaying)")
print("Current Playing Time \(game.currentGameTime)")
print("----------------------")
}
}
// game cell view controller -> checks to see if any games are in progress
func isAnyGamesInProgress(games: [Game]) -> Bool {
let inProgressGames = games.filter({ Int($0.currentGameTime) > 0 && $0.gameComplete == false })
if inProgressGames.isEmpty {
return false
}
return true
} …Run Code Online (Sandbox Code Playgroud) 键入时我看不到建议..我有tableview单元格和文本字段.
我正在使用MPGTextField库,swift版本(支持swift 2).
对此有何解决方案?
码:
@IBOutlet weak var articleField: MPGTextField_Swift!
override func viewDidLoad() {
super.viewDidLoad()
articleField.mDelegate = self
}
func dataForPopoverInTextField(textfield: MPGTextField_Swift) -> [Dictionary<String, AnyObject>] {
return articles
}
func textFieldShouldSelect(textField: MPGTextField_Swift) -> Bool{
return true
}
func textFieldDidEndEditing(textField: MPGTextField_Swift, withSelection data: Dictionary<String,AnyObject>){
print(data["CustomObject"])
}
Run Code Online (Sandbox Code Playgroud) 我正在使用自动调整项目中的单元格大小.我希望将单元格保持在最小值height,但是我无法在内容视图中为我的单元格设置最小height 约束(因为它在" 添加新约束"视图中显示为灰色:
无论如何都要为我的细胞添加最小height 约束?
我在tableView中使用自定义单元格,但是当我运行时,我得到了我在问题中提到的错误.
self.districtTableView.register(UINib(nibName: "PlaceCollectionViewCell", bundle: nil), forCellReuseIdentifier: "placeCell")
func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
return false
}
func textFieldDidEndEditing(_ textField: UITextField) {
// TODO: Your app can do something when textField finishes editing
print("The textField ended editing. Do something based on app requirements.")
}
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return districts.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = …Run Code Online (Sandbox Code Playgroud) tableviewcell ×10
ios ×9
swift ×4
objective-c ×3
uitableview ×3
autolayout ×2
cocoa ×1
image ×1
ios8 ×1
iphone ×1
loadnibnamed ×1
nsbundle ×1
swift3 ×1
xcode ×1