我正在尝试使用Core Graphics在UIImage的中心放置一个矩形,大致如下所示:
到目前为止这是我的代码:
func drawRectangleOnImage(image: UIImage) -> UIImage {
let imageSize = image.size
let scale: CGFloat = 0
UIGraphicsBeginImageContextWithOptions(imageSize, false, scale)
let context = UIGraphicsGetCurrentContext()
let rectangle = CGRect(x: 0, y: (imageSize.height/2) - 30, width: imageSize.width, height: 60)
CGContextSetFillColorWithColor(context, UIColor.blackColor().CGColor)
CGContextSetStrokeColorWithColor(context, UIColor.redColor().CGColor)
CGContextSetLineWidth(context, 5)
CGContextAddRect(context, rectangle)
CGContextDrawPath(context, .Fill)
let newImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return newImage
}
Run Code Online (Sandbox Code Playgroud)
我感觉好像它没有画在我发送的图像之上,它正在创造一个新的图像.整个东西变成红色,矩形变黑.我想要黑色矩形,其余部分仍应与图像相同.
我究竟做错了什么?
我是 python 新手,我正在尝试在类中动态创建新实例。所以让我给你举个例子,如果我有一个这样的类:
class Person(object):
def __init__(self, name, age, job):
self.name = name
self.age = age
self.job = job
Run Code Online (Sandbox Code Playgroud)
据我所知,对于我必须插入的每个新实例,我必须声明一个变量并将其附加到 person 对象,如下所示:
variable = Person(name, age, job)
Run Code Online (Sandbox Code Playgroud)
有没有办法可以动态地做到这一点?假设我有一本这样的字典:
persons_database = {
'id' : ['name', age, 'job'], .....
}
Run Code Online (Sandbox Code Playgroud)
我可以创建一段代码来迭代这个数据库并在Person类中自动创建新实例吗?
是否可以像 UITableView headerView 一样创建 UICollectionView 标题视图?我的意思是整个集合视图的标题视图,而不是每个部分的重复视图。就像图1是我想要的,图现在我已经完成了。


有没有一种有效的快捷方法可以从python字典中一次删除多个键?
例如;
x = {'a': 5, 'b': 2, 'c': 3}
x.pop('a', 'b')
print x
{'c': 3}
Run Code Online (Sandbox Code Playgroud) 我在调用从另一个模块导入的另一个方法的模块中有以下方法:
def imported_function():
do_unnecessary_things_for_unittest()
Run Code Online (Sandbox Code Playgroud)
需要测试的实际方法,导入并使用上述功能:
from somewhere import imported_function
def function_to_be_tested():
imported_function()
do_something_more()
return 42
Run Code Online (Sandbox Code Playgroud)
内部呼叫和内部相关计算imported_function并不重要,他们是不是我想要测试,所以我只是想跳过他们,而测试的实际功能是什么function_to_be_tested.
因此,我试图在测试方法内部的某个地方修补模块,但没有运气.
def test_function_to_be_tested(self):
import somewhere
somewhere.__dict__['imported_function'] = lambda : True
Run Code Online (Sandbox Code Playgroud)
问题是,如何在测试时修补模块的方法,以便在测试阶段不会调用它?
我想从我的模型中删除一行,该行具有带有 postgresql 的foreignkey。但我收到了这个错误:
IntegrityError:(IntegrityError)表“users”上的更新或删除违反了表“users”上的外键约束“users_bestfriend_id_fkey”详细信息:键(id)=(3)仍然从表“users”中引用。'从用户中删除,其中 users.id = %(id)s' {'id': 3}
我认为要解决这个问题,我应该使用 CASCADE,但不知道如何在我的模型中使用它,所以如果你帮忙的话,谢谢:)
模型.py:
friends = db.Table('friends',
db.Column('user_id', db.Integer, db.ForeignKey('users.id')),
db.Column('friend_id', db.Integer, db.ForeignKey('users.id'))
)
class Users(db.Model):
id = db.Column(db.Integer, primary_key = True)
name = db.Column(db.String(50), index=True)
age= db.Column(db.Integer )
email = db.Column(db.String(50),index=True, unique= True)
bestfriend_id = db.Column(db.Integer, db.ForeignKey('users.id'))
is_bestfriend = db.relationship( 'Users', uselist=False, remote_side=[id], post_update=True)
Run Code Online (Sandbox Code Playgroud)
视图.py:
# delete user profile
@layout.route('/delete/<int:id>')
@login_required
def delete(id):
user = Users.query.get_or_404(id)
if g.user.id == user.id:
flash('You are not allow to delete yourself.')
else: …Run Code Online (Sandbox Code Playgroud) 在我的 Django 项目中,我有一个表单(forms.py),它实现了 pytz 来获取当前时区,如下所示:
tz = timezone.get_current_timezone()
Run Code Online (Sandbox Code Playgroud)
我已将此值作为初始值传递给表单字段,如下所示:
timezone = forms.CharField(label='Time Zone', initial=tznow)
Run Code Online (Sandbox Code Playgroud)
这为该字段提供了当前时区的默认值,在我的情况下,它恰好是Asia/Calcutta。
现在我想找到给定时区的 UTC 偏移值,在这种情况下亚洲/加尔各答是+5:30
我也尝试了 tzinfo() 方法,但找不到预期的结果。有人可以指导我完成这个吗?
说我有清单 [34523, 55, 65, 2]
获得[3,5,6,2]最有效数字的最有效方法是什么.如果可能的话,不改变每个改变str()?
这是我设置边框、阴影和角的代码
// set border
[self.avatarImageView.layer setBorderColor: [[UIColor whiteColor] CGColor]];
[self.avatarImageView.layer setBorderWidth: 2.0];
// set shadow
[self.avatarImageView.layer setShadowOffset:CGSizeZero];
[self.avatarImageView.layer setShadowOpacity:1.0];
self.avatarImageView.clipsToBounds = NO;
// set corner
self.avatarImageView.layer.cornerRadius = 10.0;
self.avatarImageView.layer.masksToBounds = YES;
Run Code Online (Sandbox Code Playgroud)
如果我只使用set borderand的代码set corner,它就像这样工作得很好
但是如果我添加代码set corner,我会得到这样的结果(边框和角半径有效,但阴影消失了)
然而,如果它单独存在,则设置角落的代码工作完美。请指导我该怎么做。任何帮助将不胜感激
更新
关注@ozgur 答案。在我的代码中添加 2 行,它会提供非常漂亮的视图,但阴影会小一点
self.avatarImageView.layer.shouldRasterize = YES;
self.avatarImageView.layer.shadowPath = [UIBezierPath bezierPathWithRoundedRect:self.avatarImageView.bounds cornerRadius:10].CGPath;
Run Code Online (Sandbox Code Playgroud)
问题值:identifierForVendor.uuidString
\n\n根据苹果文档:
\n\n\n\n\n当应用程序(或来自同一供应商的另一个应用程序)安装在 iOS 设备上时,此属性中的值保持不变。当用户从设备中删除所有供应商\xe2\x80\x99s 应用程序并随后重新安装其中一个或多个应用程序时,该值会发生变化。当使用 Xcode 安装测试版本或使用临时分发在设备上安装应用程序时,该值也可能会更改。因此,如果您的应用程序在任何地方存储此属性的值,您应该妥善处理标识符更改的情况。
\n
设想:
在这里,这个值UIDevice.current.identifierForVendor!.uuidString发生了变化。这对我们来说非常重要,因为我们有一个与该值相关联的应用程序更新逻辑。我们假设当用户从 TestFlight/AppStore 更新应用程序时该值不会改变,因为两者都是使用 AppStore 分发配置文件构建的。
注意:用户没有删除/卸载该应用程序。他刚刚将版本从 v1.0.0(0) 更新到 v1.0.0(1)。
\n\n请让我知道你的想法。
\npython ×5
ios ×3
swift ×2
class ×1
database ×1
dictionary ×1
django ×1
flask ×1
integer ×1
list ×1
objective-c ×1
oop ×1
postgresql ×1
python-2.7 ×1
testflight ×1
uiimage ×1
uiimageview ×1
unit-testing ×1